Commit e13d17c2a346d83dfa76c05dcf92aa43fc87e76d

Authored by Guilherme Fay Vergara
1 parent 2da88ff4
Exists in master

Atualizando implementação do login unico, ajustando issues https://softwarepubli…

…co.gov.br/gitlab/prototocolizacao/protocolizacao/issues/1 https://softwarepublico.gov.br/gitlab/prototocolizacao/protocolizacao/issues/2 e https://softwarepublico.gov.br/gitlab/prototocolizacao/protocolizacao/issues/3
Showing 140 changed files with 2473 additions and 1972 deletions   Show diff stats

Too many changes.

To preserve performance only 100 of 140 files displayed.

CHANGELOG
... ... @@ -1,62 +0,0 @@
1   -# CHANGELOG
2   -
3   -## 1.2.0 - (27/10/2017)
4   ----
5   -### Features:
6   -- Quando um protocolo está em analise ele agora está em uma nova tela chamada "ANALISANDO";
7   -
8   -### Bugfixes:
9   -- Modal quando o usuário visualiza um documento agora com botão de fechar;
10   -- Melhorado alguns aspectos de segurança;
11   -- Tamplate do email modificado;
12   -- Modificado email na home;
13   -- Adicionado FAVICON;
14   -- Permitido apenas caixa alta no nome (cadastro);
15   -
16   -## 1.1.4 - (20/10/2017)
17   ----
18   -### Features:
19   -
20   -- Criando diretório docker e escondendo variáveis de acesso a banco;
21   -- Adicionando import do certificado;
22   -- Adição do diretorio docker já com as configurações padrões para integração continua;
23   -
24   -### Bugfixes:
25   -
26   -
27   -## 1.1.3 - (13/10/2017)
28   ----
29   -### Features:
30   -### Bugfixes:
31   -
32   -- Ajustando lista de documentos ativos e inativos
33   -
34   -## 1.1.2 - (06/10/2017)
35   ----
36   -### Features:
37   -
38   -- Ajustes no controle da modal;
39   -- Validação de data de pesquisa de protocolo;
40   -- Apresentação do texto de recusa;
41   -
42   -### Bugfixes:
43   -
44   -- Dinamização do cadastro do tipo de documento;
45   -
46   -## 1.1.1 - (02/10/2017)
47   ----
48   -### Features
49   -
50   -- Corrigido Texto "Deseja informar protocolo anterior?" atualizado para "Deseja informar o numero do protocolo anterior?";
51   -- Corrigido a restrição do documento e do processo. Agora o documento é público e o Processo privado;
52   -
53   -### Bugfixes:
54   -
55   -- Corrigido bug de envio com duplicidade para o sei quando dois usuários estão analisando o mesmo protocolo;
56   -- Corrigido bug onde o E-Mail Interessado 1 não estava recebendo email no caso de recusa e de aceite;
57   -
58   -## 1.0.0 (25/09/2017)
59   ----
60   -### Features:
61   -
62   -- Versão estável do projeto
63 0 \ No newline at end of file
docker/Dockerfile
1 1 FROM tomcat:8.5.20-jre8-alpine
2 2  
3   -LABEL maintainer="MP/SPO <biblioteca.digital@planejamento.gov.br>"
  3 +LABEL maintainer="MP/SPO <protocolo@planejamento.gov.br>"
  4 +
  5 +ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
  6 +
  7 +ENV JAVA_SECURITY ${JAVA_HOME}/jre/lib/security
  8 +
  9 +ENV JAVA_CACERTS ${JAVA_SECURITY}/cacerts
4 10  
5   -ENV JAVA_CACERTS /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacerts
6 11 ENV PROTOCOLO_ARQUIVO /opt/protocolo_arquivos
7   -ENV CATALINA_HOME /usr/local/tomcat
8   -ENV PATH $CATALINA_HOME/bin:$PATH
9 12  
10   -#WORKDIR /root/
11   -#RUN mkdir .protocolo-config
12   -#RUN mkdir -p /root/.protocolo-arquivos/
  13 +ENV CATALINA_HOME /usr/local/tomcat
13 14  
14   -RUN mkdir -p "$CATALINA_HOME"
15   -RUN mkdir -p "$PROTOCOLO_ARQUIVO"
16   -RUN mkdir -p $CATALINA_HOME/webapps/META-INF/
  15 +ENV PATH $CATALINA_HOME/bin:$PATH
17 16  
18 17 WORKDIR $CATALINA_HOME
19 18  
20   -COPY ./FILES/ICP-Brasilv5.crt /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/
  19 +COPY ./FILES/ICP-Brasilv5.crt \
  20 + ./FILES/ACSecretariaReceitaFederalBrasilv3.crt \
  21 + ./FILES/AutoridadeCertificadoraRaizBrasileirav2.crt \
  22 + ./FILES/AutoridadeCertificadoraSERPRORFBSSL.crt \
  23 + ./FILES/AutoridadeCertificadoraMDICGOVBR.crt \
  24 + ${JAVA_SECURITY}/
  25 +
21 26 COPY ./FILES/protocolo.war $CATALINA_HOME/webapps/protocolo.war
22   -COPY ./FILES/context.xml $CATALINA_HOME/webapps/META-INF/context.xml
23   -COPY ./FILES/context.xml /usr/local/tomcat/conf/context.xml
  27 +
24 28 COPY ./FILES/server.xml /usr/local/tomcat/conf/server.xml
  29 +
25 30 COPY ./FILES/web.xml /usr/local/tomcat/conf/web.xml
26 31  
27 32 RUN apk --no-cache update \
28   - && apk --no-cache add tzdata zip unzip bzip2 less git net-tools iproute2 vim nano \
29   - && rm -f /etc/localtime \
30   - && ln -s /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
  33 + && apk --no-cache add tzdata vim nano \
  34 + && rm -f /etc/localtime \
  35 + && ln -s /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
  36 +
  37 +RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import \
  38 + -file ${JAVA_SECURITY}/ICP-Brasilv5.crt -alias ICP-Brasilv5
  39 +
  40 +RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import \
  41 + -file ${JAVA_SECURITY}/ACSecretariaReceitaFederalBrasilv3.crt -alias ACSecretariaReceitaFederalBrasilv3
  42 +
  43 +RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import \
  44 + -file ${JAVA_SECURITY}/AutoridadeCertificadoraRaizBrasileirav2.crt -alias AutoridadeCertificadoraRaizBrasileirav2
  45 +
  46 +RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import \
  47 + -file ${JAVA_SECURITY}/AutoridadeCertificadoraSERPRORFBSSL.crt -alias AutoridadeCertificadoraSERPRORFBSSL
  48 +
  49 +RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import \
  50 + -file ${JAVA_SECURITY}/AutoridadeCertificadoraMDICGOVBR.crt -alias AutoridadeCertificadoraMDICGOVBR
  51 +
  52 +RUN mkdir -p "$PROTOCOLO_ARQUIVO"
  53 +
  54 +#
  55 +# Ports to expose
  56 +EXPOSE 8080
31 57  
32   -RUN keytool -noprompt -storepass changeit -keystore ${JAVA_CACERTS} -import -file /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/ICP-Brasilv5.crt -alias ICP-Brasilv5
33 58 \ No newline at end of file
  59 +#
  60 +# Command to run
  61 +CMD ["catalina.sh", "run"]
... ...
docker/FILES/ICP-Brasilv5.crt
... ... @@ -1,38 +0,0 @@
1   ------BEGIN CERTIFICATE-----
2   -MIIGoTCCBImgAwIBAgIBATANBgkqhkiG9w0BAQ0FADCBlzELMAkGA1UEBhMCQlIx
3   -EzARBgNVBAoMCklDUC1CcmFzaWwxPTA7BgNVBAsMNEluc3RpdHV0byBOYWNpb25h
4   -bCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMMK0F1
5   -dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjUwHhcNMTYw
6   -MzAyMTMwMTM4WhcNMjkwMzAyMjM1OTM4WjCBlzELMAkGA1UEBhMCQlIxEzARBgNV
7   -BAoMCklDUC1CcmFzaWwxPTA7BgNVBAsMNEluc3RpdHV0byBOYWNpb25hbCBkZSBU
8   -ZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMMK0F1dG9yaWRh
9   -ZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjUwggIiMA0GCSqGSIb3
10   -DQEBAQUAA4ICDwAwggIKAoICAQD3LXgabUWsF+gUXw/6YODeF2XkqEyfk3VehdsI
11   -x+3/ERgdjCS/ouxYR0Epi2hdoMUVJDNf3XQfjAWXJyCoTneHYAl2McMdvoqtLB2i
12   -leQlJiis0fTtYTJayee9BAIdIrCor1Lc0vozXCpDtq5nTwhjIocaZtcuFsdrkl+n
13   -bfYxl5m7vjTkTMS6j8ffjmFzbNPDlJuV3Vy7AzapPVJrMl6UHPXCHMYMzl0KxR/4
14   -7S5XGgmLYkYt8bNCHA3fg07y+Gtvgu+SNhMPwWKIgwhYw+9vErOnavRhOimYo4M2
15   -AwNpNK0OKLI7Im5V094jFp4Ty+mlmfQH00k8nkSUEN+1TGGkhv16c2hukbx9iCfb
16   -mk7im2hGKjQA8eH64VPYoS2qdKbPbd3xDDHN2croYKpy2U2oQTVBSf9hC3o6fKo3
17   -zp0U3dNiw7ZgWKS9UwP31Q0gwgB1orZgLuF+LIppHYwxcTG/AovNWa4sTPukMiX2
18   -L+p7uIHExTZJJU4YoDacQh/mfbPIz3261He4YFmQ35sfw3eKHQSOLyiVfev/n0l/
19   -r308PijEd+d+Hz5RmqIzS8jYXZIeJxym4mEjE1fKpeP56Ea52LlIJ8ZqsJ3xzHWu
20   -3WkAVz4hMqrX6BPMGW2IxOuEUQyIaCBg1lI6QLiPMHvo2/J7gu4YfqRcH6i27W3H
21   -yzamEQIDAQABo4H1MIHyME4GA1UdIARHMEUwQwYFYEwBAQAwOjA4BggrBgEFBQcC
22   -ARYsaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0RQQ2FjcmFpei5wZGYw
23   -PwYDVR0fBDgwNjA0oDKgMIYuaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJy
24   -L0xDUmFjcmFpenY1LmNybDAfBgNVHSMEGDAWgBRpqL512cTvbOcTReRhbuVo+LZA
25   -XjAdBgNVHQ4EFgQUaai+ddnE72znE0XkYW7laPi2QF4wDwYDVR0TAQH/BAUwAwEB
26   -/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIBABRt2/JiWapef7o/
27   -plhR4PxymlMIp/JeZ5F0BZ1XafmYpl5g6pRokFrIRMFXLyEhlgo51I05InyCc9Td
28   -6UXjlsOASTc/LRavyjB/8NcQjlRYDh6xf7OdP05mFcT/0+6bYRtNgsnUbr10pfsK
29   -/UzyUvQWbumGS57hCZrAZOyd9MzukiF/azAa6JfoZk2nDkEudKOY8tRyTpMmDzN5
30   -fufPSC3v7tSJUqTqo5z7roN/FmckRzGAYyz5XulbOc5/UsAT/tk+KP/clbbqd/hh
31   -evmmdJclLr9qWZZcOgzuFU2YsgProtVu0fFNXGr6KK9fu44pOHajmMsTXK3X7r/P
32   -wh19kFRow5F3RQMUZC6Re0YLfXh+ypnUSCzA+uL4JPtHIGyvkbWiulkustpOKUSV
33   -wBPzvA2sQUOvqdbAR7C8jcHYFJMuK2HZFji7pxcWWab/NKsFcJ3sluDjmhizpQax
34   -bYTfAVXu3q8yd0su/BHHhBpteyHvYyyz0Eb9LUysR2cMtWvfPU6vnoPgYvOGO1Cz
35   -iyGEsgKULkCH4o2Vgl1gQuKWO4V68rFW8a/jvq28sbY+y/Ao0I5ohpnBcQOAawiF
36   -bz6yJtObajYMuztDDP8oY656EuuJXBJhuKAJPI/7WDtgfV8ffOh/iQGQATVMtgDN
37   -0gv8bn5NdUX8UMNX1sHhU3H1UpoW
38   ------END CERTIFICATE-----
docker/FILES/context.xml
... ... @@ -30,6 +30,7 @@
30 30 <Manager pathname="" />
31 31 -->
32 32  
  33 + <!--
33 34 <Resource
34 35 name="jdbc/protocoloDB"
35 36 auth="Container"
... ... @@ -42,6 +43,7 @@
42 43 username="MYSQL_USER"
43 44 password="MYSQL_PASSWORD"
44 45 />
  46 + -->
45 47  
46 48 <Valve className="org.apache.catalina.authenticator.BasicAuthenticator"
47 49 disableProxyCaching="false"
... ...
protocolo-web-db.sql
... ... @@ -86,7 +86,7 @@ CREATE TABLE `configuracao` (
86 86  
87 87 LOCK TABLES `configuracao` WRITE;
88 88 /*!40000 ALTER TABLE `configuracao` DISABLE KEYS */;
89   -INSERT INTO `configuracao` VALUES (1,'SMTP_SERVER','10.209.253.28','',1),(2,'SMTP_PORT','25','teste3',1),(3,'MAIL_FROM','xxx@yyy.zzz','',1),(4,'EMAIL_RESPONSAVEL','sss@sssf.com',NULL,1),(9,'URL_AUTORIZAR','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/authorize',NULL,4),(10,'URL_TOKEN','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/token',NULL,4),(11,'URL_DADOS_USUARIO','https://testeservicos-ecidadao.estaleiro.serpro.gov.br/servicos-ecidadao/ecidadao/usuario/getUserInfo/',NULL,4),(12,'CLIENT_ID','516a9b57-d022-4843-a792-93b4dc95622b',NULL,4),(13,'SCOPE','openid',NULL,4),(14,'REDIRECT_URI','https://protocolo.planejamento.gov.br/login',NULL,4),(15,'CLIENT_SECRET','Ld65DuKIva0_EU0LO1VrVC6Be7b-_AsgvkueKpW4OJlhDdJQ4TJ9nKB173M5c5mmG03uhZvEbBKnDRmAe7gZkw',NULL,4),(16,'ESCOPO','dados_brasil_cidadao',NULL,4),(18,'URL_BRASIL_CIDADAO','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/login',NULL,4),(19,'URL_PRIMEIRO_ACESSO','https://testeportal-ecidadao.estaleiro.serpro.gov.br/servicos-cidadao/acesso/#/primeiro-acesso',NULL,4),(20,'STORAGE_PATH','/opt/protocolo_arquivos','teste2',3),(21,'URL_ENDPOINT','https://seitreina.nuvem.gov.br/sei/ws/SeiWS.php','teste4',2),(22,'ASSUNTO_CODIGO_ESTRUTURADO','520.1',NULL,2),(23,'PROCEDIMENTO_ESPECIFICADO','Especificacao do processo',NULL,2),(24,'PROCEDIMENTO_NIVEL_ACESSO','0',NULL,2),(25,'PROCEDIMENTO_ID_TIPO_PROCEDIMENTO','100000346',NULL,2),(26,'DOCUMENTO_TIPO','R',NULL,2),(27,'DOCUMENTO_ID_SERIE','1',NULL,2),(28,'DOCUMENTO_NIVEL_ACESSO','0',NULL,2),(29,'SIGLA_SISTEMA','UNB',NULL,2),(30,'IDENTIFICACAO_SERVICO','testeunb',NULL,2),(31,'ID_UNIDADE','110001972',NULL,2),(32,'CAPTCHA_SITE_KEY','6LdBAVQUAAAAAET4Dun738dTVCWfhqVDuvnDoBAp',NULL,5),(33,'CAPTCHA_SECRET_KEY','6LdBAVQUAAAAAEa3owvd2PBSaOwU8OOPeFwTq13w',NULL,5),(34,'EXP_NUM_PROTOCOLO','03154000244201864','numero do protocolo do sei ',2),(35,'EXP_DESC','teste','descrição',2),(36,'EXP_NOME_PDF','teste.pdf',NULL,2),(37,'EXP_CAMINHO_ARQUIVO','/home/dario/Documentos/123456.pdf',NULL,2),(38,'EXP_SERIE_TIPO','R',NULL,2),(39,'EXP_ID_SERIE','1',NULL,2);
  89 +INSERT INTO `configuracao` VALUES (1,'SMTP_SERVER',NULL,'ip do servidor de email',1),(2,'SMTP_PORT',NULL,'porta do servidor de email',1),(3,'MAIL_FROM','','email de envio',1),(4,'EMAIL_RESPONSAVEL',NULL,'responsavel por receber os emails de erro',1),(9,'URL_AUTORIZAR',NULL,'url autorizar do login unico /autorizar',4),(10,'URL_TOKEN',NULL,'url /token do portal do software publico',4),(11,'URL_DADOS_USUARIO',NULL,''url /getUserInfo do portal do login unico,4),(12,'CLIENT_ID',NULL,'client id do login unico',4),(13,'SCOPE',NULL,'scope do login unico',4),(14,'REDIRECT_URI',NULL,'URL de retorno do login unico',4),(15,'CLIENT_SECRET',NULL,'chave secreta do login unico',4),(16,'ESCOPO',NULL,'escopo de dados do login unico',4),(18,'URL_BRASIL_CIDADAO',NULL,'URL do login',4),(19,'URL_PRIMEIRO_ACESSO',NULL,'URL para o primeiro acesso',4),(20,'STORAGE_PATH',NULL,'Local no servidor onde será alocado para guardar os arquivos',3),(21,'URL_ENDPOINT',NULL,'Url do sei',2),(22,'ASSUNTO_CODIGO_ESTRUTURADO',NULL,'Código do assunto no sei',2),(23,'PROCEDIMENTO_ESPECIFICADO',NULL,'Expecificação do procesimento no sei',2),(24,'PROCEDIMENTO_NIVEL_ACESSO',NULL,'nivel de aceso no sei',2),(25,'PROCEDIMENTO_ID_TIPO_PROCEDIMENTO',NULL,'Tipo de procedimento no sei',2),(26,'DOCUMENTO_TIPO',NULL,'Tipo de documento no sei',2),(27,'DOCUMENTO_ID_SERIE',NULL,'Id serie do documento no sei',2),(28,'DOCUMENTO_NIVEL_ACESSO',NULL,'nivel de acesso do documento no sei',2),(29,'SIGLA_SISTEMA',NULL,'Sigla do sistema no sei',2),(30,'IDENTIFICACAO_SERVICO',NULL,'Identificação do serviço no sei',2),(31,'ID_UNIDADE',NULL,'Id da unidade no sei',2),(32,'CAPTCHA_SITE_KEY',NULL,'SITE_KEY do serviço de captcha do google',5),(33,'CAPTCHA_SECRET_KEY',NULL,'SECRET_KEY do serviço de captcha do google',5)
90 90 /*!40000 ALTER TABLE `configuracao` ENABLE KEYS */;
91 91 UNLOCK TABLES;
92 92  
... ...
src/main/java/Sei/TesteIncluirDocumento.java
1 1 package Sei;
2 2  
3   -import fi.solita.clamav.ClamAVClient;
4 3 import org.apache.commons.io.FileUtils;
5 4 import org.springframework.util.Base64Utils;
6 5  
7 6 import java.io.File;
8   -import java.io.FileInputStream;
9 7 import java.net.URL;
10 8 import java.text.Normalizer;
11 9  
... ... @@ -26,20 +24,22 @@ public class TesteIncluirDocumento {
26 24  
27 25 System.out.println(part2);*/
28 26  
29   - ClamAVClient cl = new ClamAVClient("10.209.40.206", 3310);
30   - final byte[] reply;
31   - try {
32   - System.out.println("Tudo limpo.");
33   - reply = cl.scan(new FileInputStream("/home/dario/Documentos/virus.pdf"));
34   -
35   - } catch (Exception e) {
36   - throw new RuntimeException(e);
37   - }
38   - if (!ClamAVClient.isCleanReply(reply)) {
39   - System.out.println("Virus encontrado.");
40   - } else {
41   - System.out.println("Tudo limpo.");
42   - }
  27 +// ClamAVClient cl = new ClamAVClient("10.209.40.206", 3310);
  28 +// final byte[] reply;
  29 +// try {
  30 +// System.out.println("Tudo limpo.");
  31 +// reply = cl.scan(new FileInputStream("/home/dario/Documentos/virus.pdf"));
  32 +//
  33 +// } catch (Exception e) {
  34 +// throw new RuntimeException(e);
  35 +// }
  36 +// if (!ClamAVClient.isCleanReply(reply)) {
  37 +// System.out.println("Virus encontrado.");
  38 +// } else {
  39 +// System.out.println("Tudo limpo.");
  40 +// }
  41 + enviar();
  42 +
43 43 }
44 44  
45 45  
... ... @@ -52,11 +52,11 @@ public class TesteIncluirDocumento {
52 52 // System.out.println(path.resolve("PaytoStudy_Student_Guide_HiBonjour_PT.pdf").toFile().getAbsolutePath());
53 53  
54 54 //
55   - URL urlEndpoint = new URL("https://seitreina.nuvem.gov.br/sei/ws/SeiWS.php");
  55 + URL urlEndpoint = new URL("http://siphom.fazenda.gov.br/sei/ws/SeiWS.php");
56 56 SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
57 57  
58 58 Assunto assunto = new Assunto();
59   - assunto.setCodigoEstruturado("520.1"); //Tipo de assunto
  59 + assunto.setCodigoEstruturado("900"); //Tipo de assunto
60 60 Assunto[] assuntos = {assunto};
61 61  
62 62 Procedimento procedimento = new Procedimento();
... ... @@ -72,33 +72,28 @@ public class TesteIncluirDocumento {
72 72  
73 73 procedimento.setObservacao("Obs");
74 74 procedimento.setNivelAcesso("0"); // 0 = Publico, 1 = Restrito, 2 = Sigiloso
75   - procedimento.setIdTipoProcedimento("100000346"); // Tipo de Processo => Adesão de atas
76   -//
77   -//
78   -//
79   -////
80   -// Documento[] documentos = {documento};
81   -//
82   -// RetornoGeracaoProcedimento retornoGeracaoProcedimento = seiBindingStub.gerarProcedimento("UNB",
83   -// "testeunb",
84   -// "110001972",
85   -// procedimento, null,
86   -// null,
87   -// null, "S", "N", null, null, null, null, null);
88   -//
89   -// System.out.println("************ RetornoGeracaoProcedimento = " + retornoGeracaoProcedimento.getProcedimentoFormatado());
90   -// System.out.println("************ RetornoGeracaoProcedimento = " + retornoGeracaoProcedimento.getLinkAcesso());
  75 + procedimento.setIdTipoProcedimento("100000836"); // Tipo de Processo => Adesão de atas
  76 +
  77 + RetornoGeracaoProcedimento retornoGeracaoProcedimento = seiBindingStub.gerarProcedimento("PROT_ELETRONICO",
  78 + "ProtocolizacaoEletronica",
  79 + "110000054",
  80 + procedimento, null,
  81 + null,
  82 + null, "S", "N", null, null, null, null, null);
  83 +
  84 + System.out.println("************ RetornoGeracaoProcedimento = " + retornoGeracaoProcedimento.getProcedimentoFormatado());
  85 + System.out.println("************ RetornoGeracaoProcedimento = " + retornoGeracaoProcedimento.getLinkAcesso());
91 86  
92 87 Documento documento = new Documento();
93   - documento.setIdProcedimento("03154000037201729");
  88 + documento.setIdProcedimento(retornoGeracaoProcedimento.getProcedimentoFormatado());
94 89 documento.setDescricao("Meu documento 5");
95 90 documento.setNomeArquivo("PaytoStudy_Student_Guide_HiBonjour_PT.pdf");
96   - documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(new File("/home/leonardo/Downloads/PaytoStudy_Student_Guide_HiBonjour_PT.pdf"))));
  91 + documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(new File("/home/matheus/teste.pdf"))));
97 92 documento.setTipo("R");
98 93 documento.setIdSerie("1");
99   - documento.setData("16/08/2017");
  94 + documento.setData("02/04/2019");
100 95  
101   - RetornoInclusaoDocumento retornoInclusaoDocumento = seiBindingStub.incluirDocumento("UNB", "testeunb", "110001972", documento);
  96 + RetornoInclusaoDocumento retornoInclusaoDocumento = seiBindingStub.incluirDocumento("PROT_ELETRONICO", "ProtocolizacaoEletronica", "110000054", documento);
102 97 System.out.println("Link = " + retornoInclusaoDocumento.getLinkAcesso());
103 98 }
104 99 }
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/clamav/ClamavUtil.java
1 1 package br.gov.planejamento.dipla.protocolo.clamav;
2 2  
3   -import fi.solita.clamav.ClamAVClient;
4 3 import org.springframework.beans.factory.annotation.Autowired;
5   -import org.springframework.context.annotation.PropertySource;
6 4 import org.springframework.core.env.Environment;
7 5 import org.springframework.stereotype.Component;
8 6  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/config/BrasilCidadaoConfig.java
1 1 package br.gov.planejamento.dipla.protocolo.config;
2 2  
3   -import java.security.KeyManagementException;
4   -import java.security.NoSuchAlgorithmException;
5   -import java.security.cert.CertificateException;
6   -import java.security.cert.X509Certificate;
7   -import java.util.Base64;
8   -import java.util.HashMap;
9   -import java.util.Map;
10   -import java.util.Random;
11   -
12   -import javax.net.ssl.HttpsURLConnection;
13   -import javax.net.ssl.SSLContext;
14   -import javax.net.ssl.TrustManager;
15   -import javax.net.ssl.X509TrustManager;
16   -
17   -import org.springframework.beans.factory.annotation.Autowired;
18   -import org.springframework.context.annotation.PropertySource;
19   -import org.springframework.core.env.Environment;
20   -import org.springframework.http.HttpHeaders;
21   -import org.springframework.http.MediaType;
22 3  
23 4 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
24 5 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
25   -
  6 +import org.springframework.beans.factory.annotation.Autowired;
26 7 import org.springframework.context.annotation.Bean;
27 8 import org.springframework.context.annotation.Configuration;
28 9  
  10 +import javax.net.ssl.HttpsURLConnection;
  11 +import javax.net.ssl.SSLContext;
  12 +import javax.net.ssl.TrustManager;
  13 +import javax.net.ssl.X509TrustManager;
  14 +import java.net.URLEncoder;
  15 +import java.security.KeyManagementException;
  16 +import java.security.NoSuchAlgorithmException;
  17 +import java.security.cert.CertificateException;
  18 +import java.security.cert.X509Certificate;
  19 +import java.util.Random;
  20 +
29 21  
30 22 @Configuration
31 23 //@PropertySource(value = {"file:${HOME}/.protocolo-config/protocolo-brasilCidadao.properties"})
... ... @@ -34,86 +26,88 @@ public class BrasilCidadaoConfig {
34 26  
35 27 @Autowired
36 28 private ConfiguracaoRepository configuracaoRepository;
37   -
  29 +
38 30 Random gerador = new Random();
39   -
40   - public String gerarUrlAutorizar(){
41   - disableSSLCertificateChecking();
42   - String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_AUTORIZAR)+"?response_type=code&client_id="+
43   - configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_ID)+"&redirect_uri="+
44   - configuracaoRepository.recuperarValor(ConfiguracaoEnum.REDIRECT_URI)+"&nonce="+gerador.hashCode()+
45   - "&state="+gerador.hashCode();
46   - return url;
47   - }
48   - public String gerarUrlToken(){
49   - String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_TOKEN);
50   - return url;
51   - }
52   - public String gerarUrlDadosUsuarios(String token){
53   - String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_DADOS_USUARIO)+
54   - configuracaoRepository.recuperarValor(ConfiguracaoEnum.ESCOPO)+"?access_token="+token;
55   - return url;
56   - }
57   - @Bean(name = "urlBrasilCidadao")
58   - public UrlBrasilCidadao gerarUrlBrasilCidadao(){
59   - String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_BRASIL_CIDADAO);
60   - return () -> url;
61   - }
62   - @Bean(name = "urlPrimeiroAcesso")
63   - public UrlPrimeiroAcesso gerarUrlPrimeiroAcesso(){
64   - String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_PRIMEIRO_ACESSO);
65   - return () -> url;
66   - }
67   -
68   - public String gerarRequisicaoAtributo(String code){
69   - String reqAtr =
70   - "grant_type=authorization_code&"+
71   - "code="+code+"&"+
72   - "redirect_uri="+configuracaoRepository.recuperarValor(ConfiguracaoEnum.REDIRECT_URI);
73   -
74   - return reqAtr;
75   - }
76   - public HttpHeaders gerarRequisicaoHeader(){
77   - HttpHeaders headers = new HttpHeaders();
78   - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
79   - headers.add(headers.AUTHORIZATION, "Basic "+Base64.getEncoder().encodeToString((
80   - configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_ID)+":"+
81   - configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_SECRET)).getBytes()));
82   - return headers;
83   - }
84   -
85   -
86   - private void disableSSLCertificateChecking() {
87   - TrustManager[] trustAllCerts = new TrustManager[] {
88   - new X509TrustManager() {
89   - public X509Certificate[] getAcceptedIssuers() {
90   - return null;
91   - }
92   - @Override
93   - public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
94   - // Not implemented
95   - }
96   - @Override public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
97   - // Not implemented
98   - }
99   - }
100   - };
101   - try {
102   - SSLContext sc = SSLContext.getInstance("TLS");
103   - sc.init(null, trustAllCerts, new java.security.SecureRandom());
104   - HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
105   -
106   - } catch (KeyManagementException e) {
107   - e.printStackTrace();
108   - } catch (NoSuchAlgorithmException e) {
109   - e.printStackTrace();
110   - }
111   - }
112   - public interface UrlBrasilCidadao {
  31 +
  32 + public String gerarUrlAutorizar(){
  33 + disableSSLCertificateChecking();
  34 + String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_AUTORIZAR)+"?response_type=code&client_id="+
  35 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_ID)+ "&scope="
  36 + + configuracaoRepository.recuperarValor(ConfiguracaoEnum.SCOPE) + "&redirect_uri=" +
  37 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.REDIRECT_URI)+"&nonce="+gerador.hashCode()+
  38 + "&state="+gerador.hashCode();
  39 + return url;
  40 + }
  41 +
  42 + @Bean(name = "urlBrasilCidadao")
  43 + public UrlBrasilCidadao gerarUrlBrasilCidadao(){
  44 + String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_BRASIL_CIDADAO);
  45 + return () -> url;
  46 + }
  47 + @Bean(name = "urlPrimeiroAcesso")
  48 + public UrlPrimeiroAcesso gerarUrlPrimeiroAcesso(){
  49 + String url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_PRIMEIRO_ACESSO);
  50 + return () -> url;
  51 + }
  52 +
  53 + private void disableSSLCertificateChecking() {
  54 + TrustManager[] trustAllCerts = new TrustManager[] {
  55 + new X509TrustManager() {
  56 + public X509Certificate[] getAcceptedIssuers() {
  57 + return null;
  58 + }
  59 + @Override
  60 + public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
  61 + // Not implemented
  62 + }
  63 + @Override public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
  64 + // Not implemented
  65 + }
  66 + }
  67 + };
  68 + try {
  69 + SSLContext sc = SSLContext.getInstance("TLS");
  70 + sc.init(null, trustAllCerts, new java.security.SecureRandom());
  71 + HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
  72 +
  73 + } catch (KeyManagementException e) {
  74 + e.printStackTrace();
  75 + } catch (NoSuchAlgorithmException e) {
  76 + e.printStackTrace();
  77 + }
  78 + }
  79 + public interface UrlBrasilCidadao {
113 80 String getUrlBrasilCidadao();
114 81 }
115 82  
116   - public interface UrlPrimeiroAcesso {
  83 + public interface UrlPrimeiroAcesso {
117 84 String getUrlPrimeiroAcesso();
118 85 }
  86 +
  87 + public String gerarURLToken(String code){
  88 + String url = "";
  89 + try {
  90 + url = configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_TOKEN) + "?grant_type=authorization_code&code="
  91 + + code + "&redirect_uri=" + URLEncoder.encode(configuracaoRepository.recuperarValor(ConfiguracaoEnum.REDIRECT_URI), "UTF-8") ;
  92 + }catch (Exception e){
  93 + e.printStackTrace();
  94 + }
  95 + return url;
  96 + }
  97 +
  98 + public String obterClientSecret(){
  99 + return configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_SECRET);
  100 + }
  101 +
  102 + public String obterClientID(){
  103 + return configuracaoRepository.recuperarValor(ConfiguracaoEnum.CLIENT_ID);
  104 + }
  105 +
  106 + public String obterURLBrasilCidadao(){
  107 + return configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_BRASIL_CIDADAO);
  108 + }
  109 +
  110 + public String obterURLDadosUsuario(){
  111 + return configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_DADOS_USUARIO);
  112 + }
119 113 }
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/config/MailConfig.java
1 1 package br.gov.planejamento.dipla.protocolo.config;
2 2  
  3 +import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
  4 +import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
3 5 import org.springframework.beans.factory.annotation.Autowired;
4 6 import org.springframework.context.annotation.Bean;
5 7 import org.springframework.context.annotation.Configuration;
6   -import org.springframework.context.annotation.PropertySource;
7   -import org.springframework.core.env.Environment;
8 8 import org.springframework.mail.javamail.JavaMailSender;
9 9 import org.springframework.mail.javamail.JavaMailSenderImpl;
10 10  
11   -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
12   -import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
13   -
14 11 import java.util.Properties;
15 12  
16 13 @Configuration
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/config/SecurityConfig.java
1 1 package br.gov.planejamento.dipla.protocolo.config;
2 2  
  3 +import br.gov.planejamento.dipla.protocolo.handler.LogoutBrasilCidadaoHandler;
  4 +import br.gov.planejamento.dipla.protocolo.security.CustomAuthenticationFailureHandler;
3 5 import org.springframework.beans.factory.annotation.Autowired;
4 6 import org.springframework.context.annotation.Bean;
5   -import org.springframework.context.annotation.Configuration;
6   -import org.springframework.core.annotation.Order;
7 7 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
8 8 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
9 9 import org.springframework.security.config.annotation.web.builders.WebSecurity;
... ... @@ -12,14 +12,8 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
12 12 import org.springframework.security.core.userdetails.UserDetailsService;
13 13 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
14 14 import org.springframework.security.crypto.password.PasswordEncoder;
15   -import org.springframework.security.web.authentication.AuthenticationFailureHandler;
16   -import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint;
17   -import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter;
18 15 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
19 16  
20   -import br.gov.planejamento.dipla.protocolo.handler.LogoutBrasilCidadaoHandler;
21   -import br.gov.planejamento.dipla.protocolo.security.CustomAuthenticationFailureHandler;
22   -
23 17  
24 18  
25 19 /**
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/config/ServiceConfig.java
... ... @@ -7,12 +7,8 @@ import br.gov.planejamento.dipla.protocolo.storage.local.ArquivoStorageLocal;
7 7 import org.springframework.beans.factory.annotation.Autowired;
8 8 import org.springframework.context.annotation.Bean;
9 9 import org.springframework.context.annotation.Configuration;
10   -import org.springframework.context.annotation.PropertySource;
11   -import org.springframework.core.env.Environment;
12 10 import org.springframework.util.StringUtils;
13 11  
14   -import java.io.IOException;
15   -import java.nio.file.Files;
16 12 import java.nio.file.Path;
17 13  
18 14 import static java.nio.file.FileSystems.getDefault;
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/controllers/ArquivosController.java
... ... @@ -10,12 +10,9 @@ import br.gov.planejamento.dipla.protocolo.repositories.ArquivosRepository;
10 10 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
11 11 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorage;
12 12 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorageRunnable;
13   -import org.apache.tomcat.util.threads.ThreadPoolExecutor;
14 13 import org.springframework.beans.factory.annotation.Autowired;
15 14 import org.springframework.http.MediaType;
16 15 import org.springframework.http.ResponseEntity;
17   -import org.springframework.scheduling.config.Task;
18   -import org.springframework.security.access.method.P;
19 16 import org.springframework.web.bind.annotation.*;
20 17 import org.springframework.web.context.request.async.DeferredResult;
21 18 import org.springframework.web.multipart.MultipartFile;
... ... @@ -23,13 +20,10 @@ import org.springframework.web.servlet.ModelAndView;
23 20 import org.springframework.web.util.UriUtils;
24 21  
25 22 import javax.servlet.http.HttpServletRequest;
  23 +import java.io.File;
26 24 import java.io.IOException;
27   -import java.net.MalformedURLException;
28   -import java.net.URLEncoder;
29   -import java.nio.file.Files;
30 25 import java.util.Base64;
31 26 import java.util.List;
32   -import java.io.*;
33 27  
34 28  
35 29  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/controllers/ConfiguracaoController.java
1 1 package br.gov.planejamento.dipla.protocolo.controllers;
2 2  
3   -import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig.UrlBrasilCidadao;
4 3 import br.gov.planejamento.dipla.protocolo.controllers.page.PageWrapper;
5   -import br.gov.planejamento.dipla.protocolo.controllers.sessions.ArquivosSession;
6   -import br.gov.planejamento.dipla.protocolo.dto.ArquivoDTO;
7   -import br.gov.planejamento.dipla.protocolo.dto.MetadadosDTO;
8 4 import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
9 5 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail;
10   -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
11   -import br.gov.planejamento.dipla.protocolo.entities.EmailEnum;
12 6 import br.gov.planejamento.dipla.protocolo.entities.Metadado;
13   -import br.gov.planejamento.dipla.protocolo.entities.MetadadosEmail;
14   -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
15   -import br.gov.planejamento.dipla.protocolo.entities.StatusEnum;
16   -import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;
17 7 import br.gov.planejamento.dipla.protocolo.mail.Mailer;
18 8 import br.gov.planejamento.dipla.protocolo.repositories.ClassificacaoRepository;
19 9 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoEmailRepository;
20 10 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
21   -import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository;
22   -import br.gov.planejamento.dipla.protocolo.repositories.TiposDocumentoRepository;
23   -import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
24 11 import br.gov.planejamento.dipla.protocolo.repositories.filter.ConfiguracaoFilter;
25   -import br.gov.planejamento.dipla.protocolo.repositories.filter.ProtocoloFilter;
26   -import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;
27   -import br.gov.planejamento.dipla.protocolo.services.AutoCadastroService;
28 12 import br.gov.planejamento.dipla.protocolo.services.ConfiguracaoEmailService;
29 13 import br.gov.planejamento.dipla.protocolo.services.ConfiguracaoService;
30   -import br.gov.planejamento.dipla.protocolo.services.EnviarProtocoloService;
31   -import br.gov.planejamento.dipla.protocolo.services.SalvarProtocoloService;
32   -import br.gov.planejamento.dipla.protocolo.services.UnidadeService;
33   -import br.gov.planejamento.dipla.protocolo.services.ProtocoloFlagService;
34 14 import org.springframework.beans.factory.annotation.Autowired;
35   -import org.springframework.beans.factory.annotation.Value;
36   -import org.springframework.context.annotation.Bean;
37 15 import org.springframework.data.domain.Pageable;
38 16 import org.springframework.data.web.PageableDefault;
39   -import org.springframework.http.MediaType;
40   -import org.springframework.http.ResponseEntity;
41   -import org.springframework.security.core.annotation.AuthenticationPrincipal;
42 17 import org.springframework.stereotype.Controller;
43   -import org.springframework.util.CollectionUtils;
44   -import org.springframework.util.StringUtils;
45 18 import org.springframework.validation.BindingResult;
46   -import org.springframework.web.bind.annotation.*;
  19 +import org.springframework.web.bind.annotation.GetMapping;
  20 +import org.springframework.web.bind.annotation.PathVariable;
  21 +import org.springframework.web.bind.annotation.PostMapping;
  22 +import org.springframework.web.bind.annotation.RequestMapping;
47 23 import org.springframework.web.servlet.ModelAndView;
48 24 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
49   -import java.util.Optional;
50   -import br.gov.planejamento.dipla.protocolo.response.Response;
51   -import br.gov.planejamento.dipla.protocolo.dto.ProtocoloFlagDTO;
52 25  
53 26 import javax.servlet.http.HttpServletRequest;
54 27 import javax.validation.Valid;
55   -
56   -import java.util.ArrayList;
57   -import java.util.Date;
58 28 import java.util.Iterator;
59 29 import java.util.List;
60   -import java.util.UUID;
61   -import org.springframework.validation.ObjectError;
62 30  
63 31  
64 32 /**
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/controllers/LoginController.java
1 1 package br.gov.planejamento.dipla.protocolo.controllers;
2 2  
  3 +import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig;
  4 +import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;
  5 +import br.gov.planejamento.dipla.protocolo.entities.Usuario;
  6 +import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
  7 +import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
  8 +import br.gov.planejamento.dipla.protocolo.security.LoginAttemptService;
  9 +import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;
  10 +import br.gov.planejamento.dipla.protocolo.services.AutoCadastroService;
  11 +import br.gov.planejamento.dipla.protocolo.services.BrasilCidadaoService;
3 12 import org.slf4j.Logger;
4 13 import org.slf4j.LoggerFactory;
5 14 import org.springframework.beans.factory.annotation.Autowired;
6 15 import org.springframework.beans.factory.annotation.Value;
7   -import org.springframework.http.HttpEntity;
8   -import org.springframework.http.HttpMethod;
9   -import org.springframework.http.ResponseEntity;
10   -import org.springframework.http.converter.StringHttpMessageConverter;
11   -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
12   -import org.springframework.security.core.GrantedAuthority;
13 16 import org.springframework.security.core.annotation.AuthenticationPrincipal;
14   -import org.springframework.security.core.authority.SimpleGrantedAuthority;
15 17 import org.springframework.security.core.context.SecurityContextHolder;
16 18 import org.springframework.security.core.userdetails.User;
17   -import org.springframework.security.crypto.password.PasswordEncoder;
18 19 import org.springframework.stereotype.Controller;
19   -import org.springframework.web.bind.annotation.*;
20 20 import org.springframework.web.bind.annotation.GetMapping;
21   -import org.springframework.web.bind.annotation.PathVariable;
22 21 import org.springframework.web.bind.annotation.RequestMapping;
23   -import org.springframework.web.bind.annotation.RequestMethod;
24 22 import org.springframework.web.bind.annotation.RequestParam;
25 23 import org.springframework.web.servlet.ModelAndView;
26 24  
27   -import com.fasterxml.jackson.core.JsonParseException;
28   -import com.fasterxml.jackson.databind.JsonMappingException;
29   -import com.fasterxml.jackson.databind.ObjectMapper;
30   -
31   -import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig;
32   -import br.gov.planejamento.dipla.protocolo.dto.TokenRetornoDto;
33   -import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;
34   -import br.gov.planejamento.dipla.protocolo.entities.Grupo;
35   -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
36   -import br.gov.planejamento.dipla.protocolo.entities.Usuario;
37   -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
38   -import br.gov.planejamento.dipla.protocolo.mail.Mailer;
39   -import br.gov.planejamento.dipla.protocolo.repositories.*;
40   -import br.gov.planejamento.dipla.protocolo.security.BrasilCidadaoUserDetails;
41   -import br.gov.planejamento.dipla.protocolo.security.LoginAttemptService;
42   -import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;
43   -import br.gov.planejamento.dipla.protocolo.services.AutoCadastroService;
44   -import br.gov.planejamento.dipla.protocolo.services.BrasilCidadaoService;
45   -import br.gov.planejamento.dipla.protocolo.services.CadastroUsuarioService;
46   -
47   -import java.io.IOException;
48   -import java.nio.charset.Charset;
49   -import java.util.ArrayList;
50   -import java.util.Arrays;
51   -import java.util.Collection;
52   -import java.util.Enumeration;
53   -import java.util.HashSet;
  25 +import javax.servlet.http.HttpServletRequest;
54 26 import java.util.List;
55 27 import java.util.Optional;
56   -import java.util.Set;
57   -
58   -
59   -import javax.servlet.http.HttpServletRequest;
60 28  
61 29 /**
62 30 * @author Leonardo Dias
... ... @@ -143,18 +111,21 @@ public class LoginController {
143 111 mv.addObject("email",usuarioretorno.getEmail());
144 112  
145 113 }else if(!usuarioBrasilCidadao.isPresent()) {
146   -
147   - //Primeiro Acesso
148   - if(!usuarioEmailExistente.isPresent()) {
149   - autoCadastroService.cadastrarBrasilCidadao(usuarioretorno);
150   - }
151   - autoCadastroService.migrarBrasilCidadao(usuarioretorno);
152   - autoCadastroService.enviarConsiliacaoUsuario(usuarioBrasilCidadao.get(),usuarioretorno.getEmail(),baseUrl);
153   - mv.addObject("modalConfirmacaoBrasilCidadao",true);
154   - mv.addObject("email",usuarioretorno.getEmail());
155   - }
156   -
157   - }
  114 +
  115 + Usuario usuario = new Usuario();
  116 +
  117 + //Primeiro Acesso
  118 + if(!usuarioEmailExistente.isPresent()) {
  119 + usuario = autoCadastroService.cadastrarBrasilCidadao(usuarioretorno);
  120 + }else{
  121 + usuario = usuarioEmailExistente.get();
  122 + }
  123 + UsuarioBrasilCidadao usuarioBrasilCidadaoRetorno = autoCadastroService.migrarBrasilCidadao(usuarioretorno, usuario);
  124 + autoCadastroService.enviarConsiliacaoUsuario(usuarioBrasilCidadaoRetorno, usuario.getEmail(),baseUrl);
  125 + mv.addObject("modalConfirmacaoBrasilCidadao",true);
  126 + mv.addObject("email",usuarioretorno.getEmail());
  127 + }
  128 + }
158 129 }catch (Exception e){
159 130 msgErro=e.getMessage();
160 131 }
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/controllers/ProtocoloController.java
... ... @@ -3,16 +3,18 @@ package br.gov.planejamento.dipla.protocolo.controllers;
3 3 import br.gov.planejamento.dipla.protocolo.controllers.page.PageWrapper;
4 4 import br.gov.planejamento.dipla.protocolo.controllers.sessions.ArquivosSession;
5 5 import br.gov.planejamento.dipla.protocolo.dto.ArquivoDTO;
  6 +import br.gov.planejamento.dipla.protocolo.dto.ProtocoloFlagDTO;
6 7 import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
7 8 import br.gov.planejamento.dipla.protocolo.entities.StatusEnum;
8 9 import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository;
9 10 import br.gov.planejamento.dipla.protocolo.repositories.TiposDocumentoRepository;
10 11 import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
11 12 import br.gov.planejamento.dipla.protocolo.repositories.filter.ProtocoloFilter;
  13 +import br.gov.planejamento.dipla.protocolo.response.Response;
12 14 import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;
13 15 import br.gov.planejamento.dipla.protocolo.services.*;
  16 +import org.hibernate.service.spi.ServiceException;
14 17 import org.springframework.beans.factory.annotation.Autowired;
15   -import org.springframework.beans.factory.annotation.Value;
16 18 import org.springframework.data.domain.Pageable;
17 19 import org.springframework.data.web.PageableDefault;
18 20 import org.springframework.http.ResponseEntity;
... ... @@ -23,391 +25,396 @@ import org.springframework.util.StringUtils;
23 25 import org.springframework.validation.BindingResult;
24 26 import org.springframework.web.bind.annotation.*;
25 27 import org.springframework.web.servlet.ModelAndView;
  28 +import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
26 29 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
27 30  
28   -import java.io.IOException;
29   -import java.util.Optional;
30   -import br.gov.planejamento.dipla.protocolo.response.Response;
31   -import br.gov.planejamento.dipla.protocolo.dto.ProtocoloFlagDTO;
32   -
33 31 import javax.servlet.http.HttpServletRequest;
34 32 import javax.validation.Valid;
35   -
36   -import java.util.HashMap;
  33 +import java.io.IOException;
37 34 import java.util.List;
38   -import java.util.Map;
  35 +import java.util.Optional;
39 36 import java.util.UUID;
40 37 import java.util.concurrent.CompletableFuture;
41 38  
42   -import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
43   -
44   -import org.hibernate.service.spi.ServiceException;
45   -
46   -
47 39 /**
48 40 * @author Leonardo Dias
49 41 */
50 42 @Controller
51 43 public class ProtocoloController {
52 44  
53   - @Autowired
54   - private ArquivosSession arquivosSession;
55   -
56   - @Autowired
57   - private TiposDocumentoRepository tipoDocumentoRepository;
58   -
59   - @Autowired
60   - private UsuarioRepository usuarioRepository;
61   -
62   - @Autowired
63   - private ProtocoloRepository protocoloRepository;
64   -
65   - @Autowired
66   - private EnviarProtocoloService enviarProtocoloService;
67   -
68   - @Autowired
69   - private SalvarProtocoloService salvarProtocoloService;
70   -
71   - @Autowired
72   - private UnidadeService unidadeService;
73   -
74   - @Autowired
75   - private ProtocoloFlagService protocoloFlagService;
76   -
77   - @Autowired
78   - private EventServerService eventServerService;
79   -
80   - private final int DEFAULT_PAGEABLE_SIZE = 10;
81   -
82   - @GetMapping("/")
83   - public ModelAndView principal(Protocolo protocolo, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
84   - List<String> permissoes = usuarioRepository.permissoes(usuarioSistema.getUsuario());
85   - if (permissoes.contains("ROLE_CADASTRO") & usuarioSistema.getUsuario().getTemPerfilBrasilCidadao() == null) {
86   - ModelAndView mv = new ModelAndView("Dashboard");
87   - mv.addObject("usuario", usuarioSistema.getUsuario());
88   - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
89   - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
90   - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
91   - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
92   - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
93   - mv.addObject("unidades", unidadeService.obterUnidades());
94   - return mv;
95   - }
96   -
97   - return enviar(protocolo, usuarioSistema);
98   - }
99   -
100   - @GetMapping("/pendentes")
101   - public ModelAndView pesquisaProtocolosPendentes(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
102   - ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosPendentes");
103   - filter.setStatus(StatusEnum.PENDENTE);
104   - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable), httpServletRequest);
105   - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
106   - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
107   - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
108   - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
109   - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
110   - mv.addObject("pagina", paginaWrapper);
111   - return mv;
112   - }
113   -
114   - @GetMapping("/aprovados")
115   - public ModelAndView pesquisaProtocolosAprovados(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
116   - ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAprovados");
117   - filter.setStatus(StatusEnum.APROVADO);
118   - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable), httpServletRequest);
119   - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
120   - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
121   - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
122   - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
123   - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
124   - mv.addObject("pagina", paginaWrapper);
125   - return mv;
126   - }
127   -
128   - @GetMapping("/aprovadosManualmente")
129   - public ModelAndView pesquisaProtocolosAprovadosManualmente(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
130   - ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAprovadosManualmente");
131   - filter.setStatus(StatusEnum.APROVADO_MANUALMENTE);
132   - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable), httpServletRequest);
133   - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
134   - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
135   - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
136   - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
137   - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
138   - mv.addObject("pagina", paginaWrapper);
139   - return mv;
140   - }
141   -
142   - @GetMapping("/reprovados")
143   - public ModelAndView pesquisaProtocolosReprovados(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
144   - ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosReprovados");
145   - filter.setStatus(StatusEnum.REPROVADO);
146   - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable), httpServletRequest);
147   - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
148   - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
149   - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
150   - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
151   - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
152   - mv.addObject("pagina", paginaWrapper);
153   - return mv;
154   - }
155   -
156   - @GetMapping("/analisando")
157   - public ModelAndView pesquisaProtocolosAnalisando(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
158   - ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAnalisando");
159   - filter.setStatus(StatusEnum.ANALISANDO);
160   - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable), httpServletRequest);
161   - mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
162   - mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
163   - mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
164   - mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
165   - mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
166   - mv.addObject("pagina", paginaWrapper);
167   - return mv;
168   - }
169   -
170   - @GetMapping("/opcoes")
171   - public ModelAndView opcoes() {
172   - return new ModelAndView("/protocolo/OpcoesProtocolo");
173   - }
174   -
175   - @GetMapping("/enviar")
176   - public ModelAndView enviar(Protocolo protocolo, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
177   - if (StringUtils.isEmpty(protocolo.getUuid())) {
178   - protocolo.setUuid(UUID.randomUUID().toString());
179   - protocolo.setPossuiProtocoloAnterior("N");
180   - }
181   - ModelAndView mv = new ModelAndView("/protocolo/CadastroProtocolo");
182   - mv.addObject("usuario", usuarioSistema.getUsuario());
183   - mv.addObject("tiposDocumento", tipoDocumentoRepository.findByAtivo(true));
184   - mv.addObject("unidades", unidadeService.obterUnidades());
185   - return mv;
186   - }
187   -
188   - @PostMapping("/enviar")
189   - public ModelAndView enviar(@Valid Protocolo protocolo, BindingResult result, RedirectAttributes attributes, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
190   - if ("S".equals(protocolo.getPossuiProtocoloAnterior()) && StringUtils.isEmpty(protocolo.getNumeroProtocoloAnterior())) {
191   - result.rejectValue("numeroProtocoloAnterior", "Número do protocolo Anterior é obrigatório.", "Número do protocolo Anterior é obrigatório.");
192   - return enviar(protocolo, usuarioSistema);
193   - }
194   -
195   - if (result.hasErrors()) {
196   - return enviar(protocolo, usuarioSistema);
197   - }
198   -
199   - List<ArquivoDTO> arquivoDTOList = arquivosSession.obterArquivos(protocolo.getUuid());
200   -
201   - if (CollectionUtils.isEmpty(arquivoDTOList)) {
202   - String msg = "Nenhum arquivo anexado, favor incluir algum arquivo antes de efetuar a protocolização.";
203   - result.rejectValue("arquivo", msg, msg);
204   - return enviar(protocolo, usuarioSistema);
205   - }
206   -
207   - protocolo.setUsuario(usuarioSistema.getUsuario());
208   - enviarProtocoloService.enviar(protocolo, arquivoDTOList);
209   - attributes.addFlashAttribute("mensagem", String.format("Protocolo Nº %s salvo com sucesso.", protocolo.getNumero()));
210   - return new ModelAndView("redirect:/enviar");
211   - }
212   -
213   - @GetMapping("/meus-protocolos")
214   - public ModelAndView meusProtocolos(ProtocoloFilter filter, BindingResult result, @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
215   - ModelAndView mv = new ModelAndView("protocolo/MeusProtocolos");
216   -
217   - PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrarMeusProtocolos(usuarioSistema.getUsuario(), filter, pageable), httpServletRequest);
218   - mv.addObject("pagina", paginaWrapper);
219   -
220   - return mv;
221   - }
222   -
223   - @GetMapping("/reenvioRecibo/{codigo}")
224   - public @ResponseBody
225   - ResponseEntity<?> reenviarRecibo(@PathVariable("codigo") Protocolo protocolo,@RequestParam(value = "email", required = false) String email) {
226   - enviarProtocoloService.reenviarRecibo(protocolo,email);
227   - Response<String> response = new Response<String>();
228   - String resposta=null;
229   - if(!email.isEmpty()||email!=null) {
230   - resposta=email;
231   - }
232   - if(!protocolo.getEmail1().isEmpty()&&protocolo.getEmail1()!=null&&protocolo.getEmail1()!="") {
233   - resposta=resposta+" "+protocolo.getEmail1();
234   - }
235   - if(!protocolo.getEmail2().isEmpty()&&protocolo.getEmail2()!=null&&protocolo.getEmail2()!="") {
236   - resposta=resposta+" "+protocolo.getEmail2();
237   - }
238   - if(!protocolo.getUsuario().getEmail().isEmpty()&&protocolo.getUsuario().getEmail()!=null&&protocolo.getUsuario().getEmail()!="") {
239   - resposta=resposta+" "+protocolo.getUsuario().getEmail();
240   - }
241   - response.setData(resposta);
242   - return ResponseEntity.ok(response);
243   - }
244   -
245   -
246   - @RequestMapping("/stream")
247   - public SseEmitter enableNotifier(){
248   - //SseEmitter notifier = new SseEmitter();
249   - return eventServerService;
250   - }
251   -
252   - @PutMapping("/aprovar/{codigo}")
253   - public @ResponseBody
254   - ResponseEntity<?> aprovar(@PathVariable("codigo") Protocolo protocolo, @RequestParam(value = "sei", required = false) String sei, @RequestParam(value = "tipo", required = false) String tipo) {
255   - //SseEmitter sseEmitter = new SseEmitter();
256   - CompletableFuture.supplyAsync( () -> {
257   - try {
258   - enviarProtocoloService.enviarSEI( protocolo, sei, tipo );
259   - return "Sincronizado com Sucesso !";
260   - } catch (ServiceException e) {
261   - return e.getMessage();
262   - } catch (Exception e) {
263   - return e.getMessage();
264   - }
265   - } )
266   - .whenCompleteAsync( (result, throwable) -> {
267   - try {
268   - eventServerService.send( result );
269   - } catch (IOException e) {
270   - e.printStackTrace();
271   - }
272   - } )
273   - .exceptionally( ex -> {
274   - try {
275   - eventServerService.send( ex.getMessage() );
276   - } catch (Exception e) {
277   - e.printStackTrace();
278   - }
279   - return "erro";
280   - } );
281   -
282   - return ResponseEntity.ok().build();
283   - }
284   -
285   - @PutMapping("/aprovarManualmente/{sei}/{codigo}")
286   - public @ResponseBody
287   - ResponseEntity<?> aprovarManualmente(@PathVariable("sei") String sei, @PathVariable("codigo") Protocolo protocolo) {
288   - protocolo.setNupe(sei);
289   - salvarProtocoloService.aprovarManualmente(protocolo);
290   - return ResponseEntity.ok().build();
291   - }
292   -
293   - @GetMapping("/aprovarManualmente/{sei}")
294   - public ResponseEntity<Response<String>> consultarSei(@PathVariable("sei") String sei) {
295   - Optional<String> linkSei = enviarProtocoloService.consultarSei(sei);
296   - Response<String> response = new Response<String>();
297   - if (!linkSei.isPresent()) {
298   - response.getErrors().add("Nº SEI não encontrado: " + sei);
299   - return ResponseEntity.badRequest().body(response);
300   - }
301   - response.setData(linkSei.get());
302   - return ResponseEntity.ok(response);
303   - }
304   -
305   - @PutMapping("/reprovar/{codigo}")
306   - public @ResponseBody
307   - ResponseEntity<?> reprovar(@PathVariable("codigo") Protocolo protocolo, @RequestBody String observacao) {
308   - protocolo.setObservacao(observacao);
309   - enviarProtocoloService.recusar(protocolo);
310   - return ResponseEntity.ok().build();
311   - }
312   -
313   - /**
314   - * atulizado o status de pendente para analise na tabela protocolo
315   - *
316   - * @param protocolo
317   - * @return ResponseEntity
318   - */
319   - @PutMapping("/atualizarFlag/{codigo}")
320   - public @ResponseBody
321   - ResponseEntity<?> atualizarflag(@PathVariable("codigo") Protocolo protocolo) {
322   - salvarProtocoloService.analisando(protocolo);
323   - return ResponseEntity.ok().build();
324   - }
325   -
326   - /**
327   - * atulizado o status para pendente
328   - *
329   - * @param protocolo
330   - * @return ResponseEntity
331   - */
332   - @PutMapping("/atuzalizarFlagPendente/{codigo}")
333   - public @ResponseBody
334   - ResponseEntity<?> atuzalizarFlagPendente(@PathVariable("codigo") Protocolo protocolo) {
335   - salvarProtocoloService.pendente(protocolo);
336   - return ResponseEntity.ok().build();
337   - }
338   -
339   - /**
340   - * método para reprovar o protocolo
341   - *
342   - * @param protocolo
343   - * @return ResponseEntity
344   - */
345   - @PutMapping("/atuzalizarFlagReprovado/{codigo}")
346   - public @ResponseBody
347   - ResponseEntity<?> atuzalizarFlagReprovado(@PathVariable("codigo") Protocolo protocolo) {
348   - salvarProtocoloService.reprovar(protocolo);
349   - return ResponseEntity.ok().build();
350   - }
351   -
352   - /**
353   - * método para retirar o protocolo da análise
354   - *
355   - * @param protocolo
356   - * @return ResponseEntity
357   - */
358   - @PutMapping("/retirarAnalise")
359   - public @ResponseBody
360   - ResponseEntity<?> retirarAnalise(@RequestParam("codigo") Protocolo protocolo) {
361   - salvarProtocoloService.pendente(protocolo);
362   - return ResponseEntity.ok().build();
363   - }
364   -
365   - /**
366   - * método para retirar o protocolo da análise e deixar reprovado
367   - *
368   - * @param protocolo
369   - * @return ResponseEntity
370   - */
371   - @PutMapping("/retirarAnaliseReprovado")
372   - public @ResponseBody
373   - ResponseEntity<?> retirarAnaliseReprovado(@RequestParam("codigo") Protocolo protocolo) {
374   - salvarProtocoloService.reprovar(protocolo);
375   - return ResponseEntity.ok().build();
376   - }
377   -
378   - /**
379   - * busca o status passado o código
380   - *
381   - * @param codigo
382   - * @return ResponseEntity
383   - */
384   - @GetMapping(value = "/buscarFlag/{codigo}")
385   - public ResponseEntity<Response<ProtocoloFlagDTO>> buscarStatusPorCodigp(@PathVariable("codigo") Long codigo) {
386   - Response<ProtocoloFlagDTO> response = new Response<ProtocoloFlagDTO>();
387   - Optional<Protocolo> protocolo = protocoloFlagService.buscarStatusPorCodigo(codigo);
388   -
389   - if (!protocolo.isPresent()) {
390   - response.getErrors().add("Status não encontrado para o código: " + codigo);
391   - return ResponseEntity.badRequest().body(response);
392   - }
393   -
394   - response.setData(this.converterProtocoloFlagDto(protocolo.get()));
395   - return ResponseEntity.ok(response);
396   - }
397   -
398   - /**
399   - * convertendo a entidade para objeto DTO
400   - *
401   - * @param protocolo
402   - * @return protocoloFlagDTO
403   - */
404   - private ProtocoloFlagDTO converterProtocoloFlagDto(Protocolo protocolo) {
405   - ProtocoloFlagDTO protocoloFlagDTO = new ProtocoloFlagDTO();
406   - protocoloFlagDTO.setStatus(protocolo.getStatus().toString());
407   - //protocoloFlagDTO.setObservacao(Optional.of(protocolo.getObservacao().toString()));
408   - //protocoloFlagDTO.setObservacao().ifPresent(x -> protocolo.getObservacao(x.toString()));
409   - protocolo.getObservacaoOpt().ifPresent(observacao -> protocoloFlagDTO.setObservacao(Optional.of(observacao.toString())));
410   - return protocoloFlagDTO;
411   - }
  45 + @Autowired
  46 + private ArquivosSession arquivosSession;
  47 +
  48 + @Autowired
  49 + private TiposDocumentoRepository tipoDocumentoRepository;
  50 +
  51 + @Autowired
  52 + private UsuarioRepository usuarioRepository;
  53 +
  54 + @Autowired
  55 + private ProtocoloRepository protocoloRepository;
  56 +
  57 + @Autowired
  58 + private EnviarProtocoloService enviarProtocoloService;
  59 +
  60 + @Autowired
  61 + private SalvarProtocoloService salvarProtocoloService;
  62 +
  63 + @Autowired
  64 + private UnidadeService unidadeService;
  65 +
  66 + @Autowired
  67 + private ProtocoloFlagService protocoloFlagService;
  68 +
  69 + @Autowired
  70 + private EventServerService eventServerService;
  71 +
  72 + private final int DEFAULT_PAGEABLE_SIZE = 10;
  73 +
  74 + @GetMapping("/")
  75 + public ModelAndView principal(Protocolo protocolo, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
  76 + List<String> permissoes = usuarioRepository.permissoes(usuarioSistema.getUsuario());
  77 + if (permissoes.contains("ROLE_CADASTRO") & usuarioSistema.getUsuario().getTemPerfilBrasilCidadao() == null) {
  78 + ModelAndView mv = new ModelAndView("Dashboard");
  79 + mv.addObject("usuario", usuarioSistema.getUsuario());
  80 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  81 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  82 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  83 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  84 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  85 + mv.addObject("unidades", unidadeService.obterUnidades());
  86 + return mv;
  87 + }
  88 +
  89 + return enviar(protocolo, usuarioSistema);
  90 + }
  91 +
  92 + @GetMapping("/pendentes")
  93 + public ModelAndView pesquisaProtocolosPendentes(ProtocoloFilter filter, BindingResult result,
  94 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
  95 + ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosPendentes");
  96 + filter.setStatus(StatusEnum.PENDENTE);
  97 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable),
  98 + httpServletRequest);
  99 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  100 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  101 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  102 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  103 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  104 + mv.addObject("pagina", paginaWrapper);
  105 + return mv;
  106 + }
  107 +
  108 + @GetMapping("/aprovados")
  109 + public ModelAndView pesquisaProtocolosAprovados(ProtocoloFilter filter, BindingResult result,
  110 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
  111 + ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAprovados");
  112 + filter.setStatus(StatusEnum.APROVADO);
  113 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable),
  114 + httpServletRequest);
  115 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  116 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  117 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  118 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  119 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  120 + mv.addObject("pagina", paginaWrapper);
  121 + return mv;
  122 + }
  123 +
  124 + @GetMapping("/aprovadosManualmente")
  125 + public ModelAndView pesquisaProtocolosAprovadosManualmente(ProtocoloFilter filter, BindingResult result,
  126 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
  127 + ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAprovadosManualmente");
  128 + filter.setStatus(StatusEnum.APROVADO_MANUALMENTE);
  129 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable),
  130 + httpServletRequest);
  131 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  132 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  133 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  134 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  135 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  136 + mv.addObject("pagina", paginaWrapper);
  137 + return mv;
  138 + }
  139 +
  140 + @GetMapping("/reprovados")
  141 + public ModelAndView pesquisaProtocolosReprovados(ProtocoloFilter filter, BindingResult result,
  142 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
  143 + ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosReprovados");
  144 + filter.setStatus(StatusEnum.REPROVADO);
  145 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable),
  146 + httpServletRequest);
  147 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  148 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  149 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  150 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  151 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  152 + mv.addObject("pagina", paginaWrapper);
  153 + return mv;
  154 + }
  155 +
  156 + @GetMapping("/analisando")
  157 + public ModelAndView pesquisaProtocolosAnalisando(ProtocoloFilter filter, BindingResult result,
  158 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest) {
  159 + ModelAndView mv = new ModelAndView("protocolo/PesquisaProtocolosAnalisando");
  160 + filter.setStatus(StatusEnum.ANALISANDO);
  161 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(protocoloRepository.filtrar(filter, pageable),
  162 + httpServletRequest);
  163 + mv.addObject("protocolosAprovados", protocoloRepository.protocolosAprovados());
  164 + mv.addObject("protocolosAprovadosManualmente", protocoloRepository.protocolosAprovadosManualmente());
  165 + mv.addObject("protocolosReprovados", protocoloRepository.protocolosReprovados());
  166 + mv.addObject("protocolosPendentes", protocoloRepository.protocolosPendentes());
  167 + mv.addObject("protocolosAnalise", protocoloRepository.protocolosAnalisando());
  168 + mv.addObject("pagina", paginaWrapper);
  169 + return mv;
  170 + }
  171 +
  172 + @GetMapping("/opcoes")
  173 + public ModelAndView opcoes() {
  174 + return new ModelAndView("/protocolo/OpcoesProtocolo");
  175 + }
  176 +
  177 + @GetMapping("/enviar")
  178 + public ModelAndView enviar(Protocolo protocolo, @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
  179 + if (StringUtils.isEmpty(protocolo.getUuid())) {
  180 + protocolo.setUuid(UUID.randomUUID().toString());
  181 + protocolo.setPossuiProtocoloAnterior("N");
  182 + }
  183 + ModelAndView mv = new ModelAndView("/protocolo/CadastroProtocolo");
  184 + mv.addObject("usuario", usuarioSistema.getUsuario());
  185 + mv.addObject("tiposDocumento", tipoDocumentoRepository.findByAtivo(true));
  186 + mv.addObject("unidades", unidadeService.obterUnidades());
  187 + return mv;
  188 + }
  189 +
  190 + @PostMapping("/enviar")
  191 + public ModelAndView enviar(@Valid Protocolo protocolo, BindingResult result, RedirectAttributes attributes,
  192 + @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
  193 + if ("S".equals(protocolo.getPossuiProtocoloAnterior())
  194 + && StringUtils.isEmpty(protocolo.getNumeroProtocoloAnterior())) {
  195 + result.rejectValue("numeroProtocoloAnterior", "Número do protocolo Anterior é obrigatório.",
  196 + "Número do protocolo Anterior é obrigatório.");
  197 + return enviar(protocolo, usuarioSistema);
  198 + }
  199 +
  200 + if (result.hasErrors()) {
  201 + return enviar(protocolo, usuarioSistema);
  202 + }
  203 +
  204 + List<ArquivoDTO> arquivoDTOList = arquivosSession.obterArquivos(protocolo.getUuid());
  205 +
  206 + if (CollectionUtils.isEmpty(arquivoDTOList)) {
  207 + String msg = "Nenhum arquivo anexado, favor incluir algum arquivo antes de efetuar a protocolização.";
  208 + result.rejectValue("arquivo", msg, msg);
  209 + return enviar(protocolo, usuarioSistema);
  210 + }
  211 +
  212 + protocolo.setUsuario(usuarioSistema.getUsuario());
  213 + enviarProtocoloService.enviar(protocolo, arquivoDTOList);
  214 + attributes.addFlashAttribute("mensagem",
  215 + String.format("Protocolo Nº %s salvo com sucesso.", protocolo.getNumero()));
  216 + return new ModelAndView("redirect:/enviar");
  217 + }
  218 +
  219 + @GetMapping("/meus-protocolos")
  220 + public ModelAndView meusProtocolos(ProtocoloFilter filter, BindingResult result,
  221 + @PageableDefault(size = DEFAULT_PAGEABLE_SIZE) Pageable pageable, HttpServletRequest httpServletRequest,
  222 + @AuthenticationPrincipal UsuarioSistema usuarioSistema) {
  223 + ModelAndView mv = new ModelAndView("protocolo/MeusProtocolos");
  224 +
  225 + PageWrapper<Protocolo> paginaWrapper = new PageWrapper<>(
  226 + protocoloRepository.filtrarMeusProtocolos(usuarioSistema.getUsuario(), filter, pageable),
  227 + httpServletRequest);
  228 + mv.addObject("pagina", paginaWrapper);
  229 +
  230 + return mv;
  231 + }
  232 +
  233 + @GetMapping("/reenvioRecibo/{codigo}")
  234 + public @ResponseBody ResponseEntity<?> reenviarRecibo(@PathVariable("codigo") Protocolo protocolo,
  235 + @RequestParam(value = "email", required = false) String email) {
  236 + enviarProtocoloService.reenviarRecibo(protocolo, email);
  237 + Response<String> response = new Response<String>();
  238 + String resposta = null;
  239 + if (!email.isEmpty() || email != null) {
  240 + resposta = email;
  241 + }
  242 + if (!protocolo.getEmail1().isEmpty() && protocolo.getEmail1() != null && protocolo.getEmail1() != "") {
  243 + resposta = resposta + " " + protocolo.getEmail1();
  244 + }
  245 + if (!protocolo.getEmail2().isEmpty() && protocolo.getEmail2() != null && protocolo.getEmail2() != "") {
  246 + resposta = resposta + " " + protocolo.getEmail2();
  247 + }
  248 + if (!protocolo.getUsuario().getEmail().isEmpty() && protocolo.getUsuario().getEmail() != null
  249 + && protocolo.getUsuario().getEmail() != "") {
  250 + resposta = resposta + " " + protocolo.getUsuario().getEmail();
  251 + }
  252 + response.setData(resposta);
  253 + return ResponseEntity.ok(response);
  254 + }
  255 +
  256 + @RequestMapping("/stream")
  257 + public SseEmitter enableNotifier() {
  258 + // SseEmitter notifier = new SseEmitter();
  259 + return eventServerService;
  260 + }
  261 +
  262 + @PutMapping("/aprovar/{codigo}")
  263 + public @ResponseBody ResponseEntity<?> aprovar(@PathVariable("codigo") Protocolo protocolo,
  264 + @RequestParam(value = "sei", required = false) String sei,
  265 + @RequestParam(value = "tipo", required = false) String tipo,
  266 + @RequestParam(value = "idSei") String idSei) {
  267 + // SseEmitter sseEmitter = new SseEmitter();
  268 + CompletableFuture.supplyAsync(() -> {
  269 + try {
  270 + enviarProtocoloService.enviarSEI(protocolo, sei, tipo, idSei);
  271 + return "Sincronizado com Sucesso !";
  272 + } catch (ServiceException e) {
  273 + return e.getMessage();
  274 + } catch (Exception e) {
  275 + return e.getMessage();
  276 + }
  277 + }).whenCompleteAsync((result, throwable) -> {
  278 + try {
  279 + eventServerService.send(result);
  280 + } catch (IOException e) {
  281 + e.printStackTrace();
  282 + }
  283 + }).exceptionally(ex -> {
  284 + try {
  285 + eventServerService.send(ex.getMessage());
  286 + } catch (Exception e) {
  287 + e.printStackTrace();
  288 + }
  289 + return "erro";
  290 + });
  291 +
  292 + return ResponseEntity.ok().build();
  293 + }
  294 +
  295 + @PutMapping("/aprovarManualmente/{sei}/{codigo}")
  296 + public @ResponseBody ResponseEntity<?> aprovarManualmente(@PathVariable("sei") String sei,
  297 + @PathVariable("codigo") Protocolo protocolo) {
  298 + protocolo.setNupe(sei);
  299 + salvarProtocoloService.aprovarManualmente(protocolo);
  300 + return ResponseEntity.ok().build();
  301 + }
  302 +
  303 + @GetMapping("/aprovarManualmente/{sei}")
  304 + public ResponseEntity<Response<String>> consultarSei(@PathVariable("sei") String sei) {
  305 + Optional<String> linkSei = enviarProtocoloService.consultarSei(sei);
  306 + Response<String> response = new Response<String>();
  307 + if (!linkSei.isPresent()) {
  308 + response.getErrors().add("Nº SEI não encontrado: " + sei);
  309 + return ResponseEntity.badRequest().body(response);
  310 + }
  311 + response.setData(linkSei.get());
  312 + return ResponseEntity.ok(response);
  313 + }
  314 +
  315 + @PutMapping("/reprovar/{codigo}")
  316 + public @ResponseBody ResponseEntity<?> reprovar(@PathVariable("codigo") Protocolo protocolo,
  317 + @RequestBody String observacao) {
  318 + protocolo.setObservacao(observacao);
  319 + enviarProtocoloService.recusar(protocolo);
  320 + return ResponseEntity.ok().build();
  321 + }
  322 +
  323 + /**
  324 + * atulizado o status de pendente para analise na tabela protocolo
  325 + *
  326 + * @param protocolo
  327 + * @return ResponseEntity
  328 + */
  329 + @PutMapping("/atualizarFlag/{codigo}")
  330 + public @ResponseBody ResponseEntity<?> atualizarflag(@PathVariable("codigo") Protocolo protocolo) {
  331 + salvarProtocoloService.analisando(protocolo);
  332 + return ResponseEntity.ok().build();
  333 + }
  334 +
  335 + /**
  336 + * atulizado o status para pendente
  337 + *
  338 + * @param protocolo
  339 + * @return ResponseEntity
  340 + */
  341 + @PutMapping("/atuzalizarFlagPendente/{codigo}")
  342 + public @ResponseBody ResponseEntity<?> atuzalizarFlagPendente(@PathVariable("codigo") Protocolo protocolo) {
  343 + salvarProtocoloService.pendente(protocolo);
  344 + return ResponseEntity.ok().build();
  345 + }
  346 +
  347 + /**
  348 + * método para reprovar o protocolo
  349 + *
  350 + * @param protocolo
  351 + * @return ResponseEntity
  352 + */
  353 + @PutMapping("/atuzalizarFlagReprovado/{codigo}")
  354 + public @ResponseBody ResponseEntity<?> atuzalizarFlagReprovado(@PathVariable("codigo") Protocolo protocolo) {
  355 + salvarProtocoloService.reprovar(protocolo);
  356 + return ResponseEntity.ok().build();
  357 + }
  358 +
  359 + /**
  360 + * método para retirar o protocolo da análise
  361 + *
  362 + * @param protocolo
  363 + * @return ResponseEntity
  364 + */
  365 + @PutMapping("/retirarAnalise")
  366 + public @ResponseBody ResponseEntity<?> retirarAnalise(@RequestParam("codigo") Protocolo protocolo) {
  367 + salvarProtocoloService.pendente(protocolo);
  368 + return ResponseEntity.ok().build();
  369 + }
  370 +
  371 + /**
  372 + * método para retirar o protocolo da análise e deixar reprovado
  373 + *
  374 + * @param protocolo
  375 + * @return ResponseEntity
  376 + */
  377 + @PutMapping("/retirarAnaliseReprovado")
  378 + public @ResponseBody ResponseEntity<?> retirarAnaliseReprovado(@RequestParam("codigo") Protocolo protocolo) {
  379 + salvarProtocoloService.reprovar(protocolo);
  380 + return ResponseEntity.ok().build();
  381 + }
  382 +
  383 + /**
  384 + * busca o status passado o código
  385 + *
  386 + * @param codigo
  387 + * @return ResponseEntity
  388 + */
  389 + @GetMapping(value = "/buscarFlag/{codigo}")
  390 + public ResponseEntity<Response<ProtocoloFlagDTO>> buscarStatusPorCodigp(@PathVariable("codigo") Long codigo) {
  391 + Response<ProtocoloFlagDTO> response = new Response<ProtocoloFlagDTO>();
  392 + Optional<Protocolo> protocolo = protocoloFlagService.buscarStatusPorCodigo(codigo);
  393 +
  394 + if (!protocolo.isPresent()) {
  395 + response.getErrors().add("Status não encontrado para o código: " + codigo);
  396 + return ResponseEntity.badRequest().body(response);
  397 + }
  398 +
  399 + response.setData(this.converterProtocoloFlagDto(protocolo.get()));
  400 + return ResponseEntity.ok(response);
  401 + }
  402 +
  403 + /**
  404 + * convertendo a entidade para objeto DTO
  405 + *
  406 + * @param protocolo
  407 + * @return protocoloFlagDTO
  408 + */
  409 + private ProtocoloFlagDTO converterProtocoloFlagDto(Protocolo protocolo) {
  410 + ProtocoloFlagDTO protocoloFlagDTO = new ProtocoloFlagDTO();
  411 + protocoloFlagDTO.setStatus(protocolo.getStatus().toString());
  412 + // protocoloFlagDTO.setObservacao(Optional.of(protocolo.getObservacao().toString()));
  413 + // protocoloFlagDTO.setObservacao().ifPresent(x ->
  414 + // protocolo.getObservacao(x.toString()));
  415 + protocolo.getObservacaoOpt()
  416 + .ifPresent(observacao -> protocoloFlagDTO.setObservacao(Optional.of(observacao.toString())));
  417 + return protocoloFlagDTO;
  418 + }
412 419  
413 420 }
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/controllers/UsuarioController.java
... ... @@ -7,7 +7,6 @@ package br.gov.planejamento.dipla.protocolo.controllers;
7 7  
8 8 import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig;
9 9 import br.gov.planejamento.dipla.protocolo.controllers.page.PageWrapper;
10   -import br.gov.planejamento.dipla.protocolo.dto.ProtocoloFlagDTO;
11 10 import br.gov.planejamento.dipla.protocolo.entities.Grupo;
12 11 import br.gov.planejamento.dipla.protocolo.entities.Usuario;
13 12 import br.gov.planejamento.dipla.protocolo.repositories.GrupoRepository;
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/dto/MetadadosDTO.java
... ... @@ -3,18 +3,6 @@ package br.gov.planejamento.dipla.protocolo.dto;
3 3 import lombok.Getter;
4 4 import lombok.Setter;
5 5  
6   -import java.util.HashMap;
7   -import java.util.List;
8   -import java.util.Map;
9   -import java.util.Optional;
10   -
11   -import javax.persistence.Column;
12   -
13   -import org.hibernate.validator.constraints.NotBlank;
14   -import org.hibernate.validator.constraints.NotEmpty;
15   -
16   -import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
17   -
18 6 /**
19 7 * Created by dario on 29/09/17.
20 8 */
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/dto/ProtocoloFlagDTO.java
... ... @@ -2,8 +2,8 @@ package br.gov.planejamento.dipla.protocolo.dto;
2 2  
3 3 import lombok.Getter;
4 4 import lombok.Setter;
  5 +
5 6 import java.util.Optional;
6   -import org.hibernate.validator.constraints.NotEmpty;
7 7  
8 8 /**
9 9 * Created by dario on 29/09/17.
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Arquivos.java
... ... @@ -48,7 +48,7 @@ public class Arquivos implements Serializable {
48 48 @Column(name = "descricao_documento")
49 49 private String descricaoDocumento;
50 50  
51   - @ManyToOne
  51 + @ManyToOne(fetch=FetchType.EAGER)
52 52 @JoinColumn(name = "codigo_tipo_documento")
53 53 private TiposDocumento tipoDocumento = new TiposDocumento();
54 54  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Classificacao.java
... ... @@ -29,6 +29,6 @@ public class Classificacao implements Serializable {
29 29 @Column(name = "nome")
30 30 private String nome;
31 31  
32   - @OneToMany(mappedBy = "classificacao", cascade = CascadeType.ALL)
  32 + @OneToMany(mappedBy = "classificacao", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
33 33 private List<Configuracao> configuracoes = new ArrayList<>();
34 34 }
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Configuracao.java
1 1 package br.gov.planejamento.dipla.protocolo.entities;
2 2  
3   -import br.gov.planejamento.dipla.protocolo.validation.AtributoConfirmacao;
4 3 import lombok.EqualsAndHashCode;
5 4 import lombok.Getter;
6 5 import lombok.Setter;
7   -import org.hibernate.validator.constraints.Email;
8   -import org.hibernate.validator.constraints.Length;
9 6 import org.hibernate.validator.constraints.NotBlank;
10 7  
11 8 import javax.persistence.*;
12   -import javax.validation.constraints.NotNull;
13   -import javax.validation.constraints.Size;
14 9 import java.io.Serializable;
15   -import java.util.List;
16 10  
17 11 /**
18 12 *
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/entities/ConfiguracaoEmail.java
1 1 package br.gov.planejamento.dipla.protocolo.entities;
2 2  
3   -import br.gov.planejamento.dipla.protocolo.validation.AtributoConfirmacao;
4 3 import lombok.EqualsAndHashCode;
5 4 import lombok.Getter;
6 5 import lombok.Setter;
7   -import org.hibernate.validator.constraints.Email;
8   -import org.hibernate.validator.constraints.Length;
9 6 import org.hibernate.validator.constraints.NotBlank;
10 7  
11 8 import javax.persistence.*;
12   -import javax.validation.constraints.NotNull;
13   -import javax.validation.constraints.Size;
14 9 import java.io.Serializable;
15   -import java.util.ArrayList;
16 10 import java.util.List;
17 11  
18 12 /**
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/entities/LogSistema.java
... ... @@ -7,7 +7,6 @@ import lombok.Setter;
7 7 import javax.persistence.*;
8 8 import java.io.Serializable;
9 9 import java.util.Date;
10   -import java.util.List;
11 10  
12 11 /**
13 12 *
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Metadado.java
... ... @@ -5,10 +5,6 @@ import lombok.Getter;
5 5 import lombok.Setter;
6 6  
7 7 import javax.persistence.*;
8   -import javax.validation.constraints.NotNull;
9   -
10   -import org.hibernate.validator.constraints.NotBlank;
11   -
12 8 import java.io.Serializable;
13 9 import java.util.List;
14 10  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Protocolo.java
... ... @@ -5,7 +5,6 @@ import lombok.Getter;
5 5 import lombok.Setter;
6 6 import org.hibernate.annotations.DynamicUpdate;
7 7 import org.hibernate.validator.constraints.Email;
8   -import org.hibernate.validator.constraints.Length;
9 8 import org.hibernate.validator.constraints.SafeHtml;
10 9  
11 10 import javax.persistence.*;
... ... @@ -14,7 +13,6 @@ import java.text.SimpleDateFormat;
14 13 import java.util.ArrayList;
15 14 import java.util.Date;
16 15 import java.util.List;
17   -import javax.persistence.Transient;
18 16 import java.util.Optional;
19 17  
20 18 /**
... ... @@ -37,6 +35,10 @@ public class Protocolo implements Serializable {
37 35  
38 36 @Transient
39 37 private String linkNup;
  38 +
  39 + @Transient
  40 + private String idSei;
  41 +
40 42 @Transient
41 43 private static final String urlNup = "";
42 44  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/entities/TiposDocumento.java
... ... @@ -11,7 +11,6 @@ import lombok.Setter;
11 11 import org.hibernate.validator.constraints.NotBlank;
12 12  
13 13 import javax.persistence.*;
14   -import javax.validation.constraints.NotNull;
15 14 import java.io.Serializable;
16 15  
17 16 /**
... ... @@ -35,9 +34,15 @@ public class TiposDocumento implements Serializable {
35 34 @NotBlank(message = "O campo descrição é de preenchimento obrigatório")
36 35 private String descricao;
37 36  
38   - @NotBlank(message = "O campo código é de preenchimento obrigatório")
  37 + //@NotBlank(message = "O campo código é de preenchimento obrigatório")
39 38 @Column(name = "codigo_sei")
40 39 private String codigoSei;
  40 +
  41 + @Column(name = "codigo_sei_mf")
  42 + private String codigoSeiMf;
  43 +
  44 + @Column(name = "codigo_sei_mdic")
  45 + private String codigoSeiMdic;
41 46  
42 47 private Boolean ativo;
43 48  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/entities/Usuario.java
1 1 package br.gov.planejamento.dipla.protocolo.entities;
2 2  
3 3 import br.gov.planejamento.dipla.protocolo.validation.AtributoConfirmacao;
  4 +import lombok.AccessLevel;
4 5 import lombok.EqualsAndHashCode;
5 6 import lombok.Getter;
6 7 import lombok.Setter;
... ... @@ -8,14 +9,12 @@ import org.hibernate.validator.constraints.Email;
8 9 import org.hibernate.validator.constraints.Length;
9 10 import org.hibernate.validator.constraints.NotBlank;
10 11 import org.hibernate.validator.constraints.SafeHtml;
11   -import org.springframework.util.StringUtils;
12 12  
13 13 import javax.persistence.*;
14 14 import javax.validation.constraints.NotNull;
15 15 import javax.validation.constraints.Size;
16 16 import java.io.Serializable;
17 17 import java.util.List;
18   -import lombok.AccessLevel;
19 18  
20 19 /**
21 20 *
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/entities/UsuarioBrasilCidadao.java
1 1 package br.gov.planejamento.dipla.protocolo.entities;
2 2  
3   -import br.gov.planejamento.dipla.protocolo.validation.AtributoConfirmacao;
4 3 import lombok.EqualsAndHashCode;
5 4 import lombok.Getter;
6 5 import lombok.Setter;
7   -import org.hibernate.validator.constraints.Email;
8   -import org.hibernate.validator.constraints.Length;
9 6 import org.hibernate.validator.constraints.NotBlank;
10 7  
11 8 import javax.persistence.*;
12   -import javax.validation.constraints.NotNull;
13 9 import javax.validation.constraints.Size;
14 10 import java.io.Serializable;
15   -import java.util.List;
16 11  
17 12 /**
18 13 *
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/handler/LogoutBrasilCidadaoHandler.java
1 1 package br.gov.planejamento.dipla.protocolo.handler;
2 2  
3   -import java.io.IOException;
4   -
5   -import javax.servlet.ServletException;
6   -import javax.servlet.http.HttpServletRequest;
7   -import javax.servlet.http.HttpServletResponse;
8   -
  3 +import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig;
9 4 import org.springframework.beans.factory.annotation.Autowired;
10 5 import org.springframework.http.HttpStatus;
11 6 import org.springframework.security.core.Authentication;
12 7 import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
13 8 import org.springframework.stereotype.Component;
14   -import org.springframework.web.client.RestTemplate;
15 9  
16   -import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig;
  10 +import javax.servlet.ServletException;
  11 +import javax.servlet.http.HttpServletRequest;
  12 +import javax.servlet.http.HttpServletResponse;
  13 +import java.io.IOException;
17 14  
18 15 @Component
19 16 public class LogoutBrasilCidadaoHandler implements LogoutSuccessHandler {
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/mail/Mailer.java
1 1 package br.gov.planejamento.dipla.protocolo.mail;
2 2  
3   -import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;
4   -import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
5   -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail;
6   -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
7   -import br.gov.planejamento.dipla.protocolo.entities.EmailEnum;
8   -import br.gov.planejamento.dipla.protocolo.entities.Metadado;
9   -import br.gov.planejamento.dipla.protocolo.entities.MetadadosEmail;
10   -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
11   -import br.gov.planejamento.dipla.protocolo.entities.Usuario;
  3 +import br.gov.planejamento.dipla.protocolo.entities.*;
12 4 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoEmailRepository;
13 5 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
14 6 import br.gov.planejamento.dipla.protocolo.repositories.MetadadoRepository;
15   -import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
16   -
17 7 import org.slf4j.Logger;
18 8 import org.slf4j.LoggerFactory;
19 9 import org.springframework.beans.factory.annotation.Autowired;
20   -import org.springframework.context.annotation.PropertySource;
21   -import org.springframework.core.env.Environment;
22 10 import org.springframework.core.io.ClassPathResource;
23 11 import org.springframework.mail.javamail.JavaMailSender;
24 12 import org.springframework.mail.javamail.MimeMessageHelper;
... ... @@ -31,17 +19,9 @@ import org.thymeleaf.spring4.SpringTemplateEngine;
31 19 import org.thymeleaf.spring4.dialect.SpringStandardDialect;
32 20 import org.thymeleaf.templatemode.TemplateMode;
33 21 import org.thymeleaf.templateresolver.StringTemplateResolver;
34   -import org.w3c.dom.Document;
35   -import org.w3c.dom.Node;
36   -import org.w3c.dom.NodeList;
37   -import org.xml.sax.InputSource;
38 22  
39 23 import javax.mail.MessagingException;
40 24 import javax.mail.internet.MimeMessage;
41   -import javax.xml.parsers.DocumentBuilder;
42   -import javax.xml.parsers.DocumentBuilderFactory;
43   -
44   -import java.io.StringReader;
45 25 import java.util.Iterator;
46 26 import java.util.List;
47 27 import java.util.Locale;
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/ClassificacaoRepository.java
1 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2  
3 3 import br.gov.planejamento.dipla.protocolo.entities.Classificacao;
4   -
5   -import java.util.Optional;
6   -
7 4 import org.springframework.data.jpa.repository.JpaRepository;
8 5 import org.springframework.stereotype.Repository;
9 6  
  7 +import java.util.Optional;
  8 +
10 9 /**
11 10 *
12 11 * @author Leonardo Dias
... ... @@ -14,4 +13,5 @@ import org.springframework.stereotype.Repository;
14 13 @Repository
15 14 public interface ClassificacaoRepository extends JpaRepository<Classificacao, Long>{
16 15 public Optional<Classificacao> findByNome(String nome);
  16 + public Optional<Classificacao> findByCodigo(Long codigo);
17 17 }
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/ConfiguracaoEmailRepository.java
1 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2  
3 3 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail;
4   -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
5   -import br.gov.planejamento.dipla.protocolo.entities.MetadadosEmail;
6   -
7 4 import org.springframework.data.jpa.repository.JpaRepository;
8 5 import org.springframework.stereotype.Repository;
9 6  
10   -import java.util.List;
11 7 import java.util.Optional;
12 8  
13 9 /**
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/ConfiguracaoRepository.java
... ... @@ -3,11 +3,9 @@ package br.gov.planejamento.dipla.protocolo.repositories;
3 3 import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
4 4 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
5 5 import br.gov.planejamento.dipla.protocolo.repositories.helper.configuracao.ConfiguracaoRepositoryQueries;
6   -import br.gov.planejamento.dipla.protocolo.repositories.helper.usuario.UsuarioRepositoryQueries;
7 6 import org.springframework.data.jpa.repository.JpaRepository;
8 7 import org.springframework.stereotype.Repository;
9 8  
10   -import java.util.List;
11 9 import java.util.Optional;
12 10  
13 11 /**
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/LogStatusRepository.java
1 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2  
3 3 import br.gov.planejamento.dipla.protocolo.entities.LogSistema;
4   -
5 4 import org.springframework.data.jpa.repository.JpaRepository;
6 5 import org.springframework.stereotype.Repository;
7 6  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/LoginAttemptRepository.java
1 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2  
3 3 import br.gov.planejamento.dipla.protocolo.entities.LoginAttempt;
4   -
5 4 import org.springframework.data.jpa.repository.JpaRepository;
6 5 import org.springframework.data.jpa.repository.Modifying;
7 6 import org.springframework.data.jpa.repository.Query;
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/MetadadoRepository.java
1 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2  
3   -import br.gov.planejamento.dipla.protocolo.entities.Arquivos;
4 3 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail;
5 4 import br.gov.planejamento.dipla.protocolo.entities.Metadado;
6   -import br.gov.planejamento.dipla.protocolo.entities.MetadadosEmail;
7   -
8 5 import org.springframework.data.jpa.repository.JpaRepository;
9 6 import org.springframework.stereotype.Repository;
10 7  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/ProtocoloRepository.java
1 1 package br.gov.planejamento.dipla.protocolo.repositories;
2 2  
3 3 import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
4   -import br.gov.planejamento.dipla.protocolo.entities.StatusEnum;
5 4 import br.gov.planejamento.dipla.protocolo.entities.Usuario;
6 5 import br.gov.planejamento.dipla.protocolo.repositories.helper.protocolo.ProtocoloRepositoryQueries;
7 6 import org.springframework.data.jpa.repository.JpaRepository;
8 7 import org.springframework.data.jpa.repository.Query;
9   -import org.springframework.data.repository.query.Param;
10 8 import org.springframework.stereotype.Repository;
11   -import java.util.Optional;
12 9 import org.springframework.transaction.annotation.Transactional;
13   -import org.springframework.data.jpa.repository.JpaRepository;
14 10  
15 11 import java.math.BigDecimal;
16 12 import java.util.List;
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/TiposDocumentoRepository.java
... ... @@ -8,10 +8,10 @@ package br.gov.planejamento.dipla.protocolo.repositories;
8 8 import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;
9 9 import br.gov.planejamento.dipla.protocolo.repositories.helper.tiposDocumento.TiposDocumentoRepositoryQueries;
10 10 import org.springframework.data.jpa.repository.JpaRepository;
11   -import org.springframework.data.jpa.repository.Query;
12 11 import org.springframework.stereotype.Repository;
13   -import java.util.Optional;
  12 +
14 13 import java.util.List;
  14 +import java.util.Optional;
15 15  
16 16 /**
17 17 * @author leonardo
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/UsuarioRepository.java
... ... @@ -16,6 +16,7 @@ import java.util.Optional;
16 16 public interface UsuarioRepository extends JpaRepository<Usuario, Long>, UsuarioRepositoryQueries {
17 17  
18 18 public List<Usuario> findByCodigoIn(Long[] codigos);
  19 + public Usuario findByCodigo(Long codgio);
19 20  
20 21 public Optional<Usuario> findByEmail(String email);
21 22  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/helper/configuracao/ConfiguracaoRepositoryImpl.java
... ... @@ -2,11 +2,8 @@ package br.gov.planejamento.dipla.protocolo.repositories.helper.configuracao;
2 2  
3 3 import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
4 4 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
5   -
6   -
7   -import javax.persistence.EntityManager;
8   -import javax.persistence.PersistenceContext;
9   -
  5 +import br.gov.planejamento.dipla.protocolo.repositories.filter.ConfiguracaoFilter;
  6 +import br.gov.planejamento.dipla.protocolo.repositories.paginacao.PaginacaoUtil;
10 7 import org.hibernate.Criteria;
11 8 import org.hibernate.Session;
12 9 import org.hibernate.criterion.MatchMode;
... ... @@ -17,15 +14,13 @@ import org.springframework.data.domain.Page;
17 14 import org.springframework.data.domain.PageImpl;
18 15 import org.springframework.data.domain.Pageable;
19 16  
20   -import br.gov.planejamento.dipla.protocolo.repositories.filter.ConfiguracaoFilter;
21   -import br.gov.planejamento.dipla.protocolo.repositories.paginacao.PaginacaoUtil;
22   -
23   -import java.util.List;
  17 +import javax.persistence.EntityManager;
  18 +import javax.persistence.PersistenceContext;
24 19 import java.util.Optional;
25 20  
26 21 /**
27 22 *
28   - * @author Leonardo Dias
  23 + * @authors Leonardo Dias, Matheus de Carvalho
29 24 */
30 25 public class ConfiguracaoRepositoryImpl implements ConfiguracaoRepositoryQueries {
31 26  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/helper/configuracao/ConfiguracaoRepositoryQueries.java
1 1 package br.gov.planejamento.dipla.protocolo.repositories.helper.configuracao;
2 2  
3   -import br.gov.planejamento.dipla.protocolo.dto.MetadadosDTO;
4 3 import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
5 4 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
6   -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
7   -import br.gov.planejamento.dipla.protocolo.entities.Usuario;
8   -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
9 5 import br.gov.planejamento.dipla.protocolo.repositories.filter.ConfiguracaoFilter;
10   -import br.gov.planejamento.dipla.protocolo.repositories.filter.ProtocoloFilter;
11   -import br.gov.planejamento.dipla.protocolo.repositories.filter.UsuarioFilter;
12 6 import org.springframework.data.domain.Page;
13 7 import org.springframework.data.domain.Pageable;
14 8  
15   -import java.util.List;
16 9 import java.util.Optional;
17 10  
18 11 /**
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/repositories/helper/usuario/UsuarioRepositoryImpl.java
1 1 package br.gov.planejamento.dipla.protocolo.repositories.helper.usuario;
2 2  
3 3 import br.gov.planejamento.dipla.protocolo.entities.Grupo;
4   -import java.util.ArrayList;
5   -import java.util.List;
6   -
7   -import javax.persistence.EntityManager;
8   -import javax.persistence.PersistenceContext;
9   -
  4 +import br.gov.planejamento.dipla.protocolo.entities.Usuario;
  5 +import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
  6 +import br.gov.planejamento.dipla.protocolo.entities.UsuarioGrupo;
  7 +import br.gov.planejamento.dipla.protocolo.repositories.filter.UsuarioFilter;
  8 +import br.gov.planejamento.dipla.protocolo.repositories.paginacao.PaginacaoUtil;
10 9 import org.hibernate.Criteria;
11 10 import org.hibernate.Hibernate;
12 11 import org.hibernate.Session;
13   -import org.hibernate.criterion.Criterion;
14   -import org.hibernate.criterion.DetachedCriteria;
15   -import org.hibernate.criterion.MatchMode;
16   -import org.hibernate.criterion.Order;
17   -import org.hibernate.criterion.Projections;
18   -import org.hibernate.criterion.Restrictions;
19   -import org.hibernate.criterion.Subqueries;
  12 +import org.hibernate.criterion.*;
  13 +import org.hibernate.sql.JoinType;
20 14 import org.springframework.beans.factory.annotation.Autowired;
21 15 import org.springframework.data.domain.Page;
22 16 import org.springframework.data.domain.PageImpl;
... ... @@ -24,13 +18,11 @@ import org.springframework.data.domain.Pageable;
24 18 import org.springframework.transaction.annotation.Transactional;
25 19 import org.springframework.util.StringUtils;
26 20  
27   -import br.gov.planejamento.dipla.protocolo.entities.Usuario;
28   -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
29   -import br.gov.planejamento.dipla.protocolo.entities.UsuarioGrupo;
30   -import br.gov.planejamento.dipla.protocolo.repositories.filter.UsuarioFilter;
31   -import br.gov.planejamento.dipla.protocolo.repositories.paginacao.PaginacaoUtil;
  21 +import javax.persistence.EntityManager;
  22 +import javax.persistence.PersistenceContext;
  23 +import java.util.ArrayList;
  24 +import java.util.List;
32 25 import java.util.Optional;
33   -import org.hibernate.sql.JoinType;
34 26  
35 27 /**
36 28 *
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/security/AppUserDetailsService.java
... ... @@ -2,8 +2,6 @@ package br.gov.planejamento.dipla.protocolo.security;
2 2  
3 3 import br.gov.planejamento.dipla.protocolo.entities.Usuario;
4 4 import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
5   -
6   -import org.apache.commons.codec.digest.DigestUtils;
7 5 import org.springframework.beans.factory.annotation.Autowired;
8 6 import org.springframework.security.core.GrantedAuthority;
9 7 import org.springframework.security.core.authority.SimpleGrantedAuthority;
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/security/BrasilCidadaoUserDetails.java
1 1 package br.gov.planejamento.dipla.protocolo.security;
2 2  
3   -import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;
4   -import br.gov.planejamento.dipla.protocolo.entities.Usuario;
5 3 import org.springframework.security.core.GrantedAuthority;
6   -import org.springframework.security.core.userdetails.User;
  4 +import org.springframework.security.core.authority.SimpleGrantedAuthority;
  5 +import org.springframework.security.core.userdetails.UserDetails;
7 6  
8 7 import java.util.Collection;
  8 +import java.util.Collections;
9 9  
10 10 /**
11   - *
12 11 * @author Leonardo Dias
13 12 */
14 13  
15   -import org.springframework.security.core.GrantedAuthority;
16   -import org.springframework.security.core.authority.SimpleGrantedAuthority;
17   -import org.springframework.security.core.userdetails.UserDetails;
18   -
19   -import java.util.Collection;
20   -import java.util.Collections;
21   -import java.util.Map;
22   -
23 14 public class BrasilCidadaoUserDetails implements UserDetails {
24 15  
25 16 /**
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/security/CaptchaService.java
1 1 package br.gov.planejamento.dipla.protocolo.security;
2 2  
  3 +import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
  4 +import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
  5 +import br.gov.planejamento.dipla.protocolo.services.exeptions.ReCaptchaUnavailableException;
3 6 import org.slf4j.Logger;
4 7 import org.slf4j.LoggerFactory;
5 8 import org.springframework.beans.factory.annotation.Autowired;
6 9 import org.springframework.stereotype.Service;
7 10 import org.springframework.web.client.RestTemplate;
8 11  
9   -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
10   -import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
11   -import br.gov.planejamento.dipla.protocolo.services.exeptions.ReCaptchaUnavailableException;
12   -
13 12 import javax.servlet.http.HttpServletRequest;
14 13 import java.net.URI;
15 14  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/security/CustomAuthenticationFailureHandler.java
1 1 package br.gov.planejamento.dipla.protocolo.security;
2 2  
3   -import java.io.IOException;
4   -import java.util.Optional;
5   -
6   -import javax.servlet.ServletException;
7   -import javax.servlet.http.HttpServletRequest;
8   -import javax.servlet.http.HttpServletResponse;
9   -
10   -import org.apache.commons.codec.digest.DigestUtils;
  3 +import br.gov.planejamento.dipla.protocolo.repositories.LoginAttemptRepository;
  4 +import br.gov.planejamento.dipla.protocolo.services.AutoCadastroService;
11 5 import org.springframework.beans.factory.annotation.Autowired;
12 6 import org.springframework.security.core.AuthenticationException;
13   -import org.springframework.security.web.DefaultRedirectStrategy;
14   -import org.springframework.security.web.RedirectStrategy;
15   -import org.springframework.security.web.WebAttributes;
16 7 import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
17 8 import org.springframework.stereotype.Component;
18 9  
19   -import br.gov.planejamento.dipla.protocolo.entities.LoginAttempt;
20   -import br.gov.planejamento.dipla.protocolo.entities.Usuario;
21   -import br.gov.planejamento.dipla.protocolo.repositories.LoginAttemptRepository;
22   -import br.gov.planejamento.dipla.protocolo.services.AutoCadastroService;
  10 +import javax.servlet.ServletException;
  11 +import javax.servlet.http.HttpServletRequest;
  12 +import javax.servlet.http.HttpServletResponse;
  13 +import java.io.IOException;
23 14  
24 15 @Component
25 16 public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/security/LoginAttemptService.java
1 1 package br.gov.planejamento.dipla.protocolo.security;
2 2  
3 3  
4   -import java.util.Date;
5   -import java.util.Map;
6   -import java.util.Optional;
7   -
  4 +import br.gov.planejamento.dipla.protocolo.entities.LoginAttempt;
  5 +import br.gov.planejamento.dipla.protocolo.repositories.LoginAttemptRepository;
8 6 import org.apache.commons.codec.digest.DigestUtils;
9 7 import org.springframework.beans.factory.annotation.Autowired;
10 8 import org.springframework.stereotype.Service;
11 9  
12   -import br.gov.planejamento.dipla.protocolo.entities.LoginAttempt;
13   -import br.gov.planejamento.dipla.protocolo.repositories.LoginAttemptRepository;
14   -import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
  10 +import java.util.Date;
  11 +import java.util.Optional;
15 12  
16 13  
17 14 @Service
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/sei/ws/SeiWSClient.java
1 1 package br.gov.planejamento.dipla.protocolo.sei.ws;
2 2  
3 3 import Sei.*;
4   -import br.gov.planejamento.dipla.protocolo.entities.Arquivos;
5   -import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEnum;
6   -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
  4 +import br.gov.planejamento.dipla.protocolo.entities.*;
7 5 import br.gov.planejamento.dipla.protocolo.mail.Mailer;
8 6 import br.gov.planejamento.dipla.protocolo.repositories.ArquivosRepository;
  7 +import br.gov.planejamento.dipla.protocolo.repositories.ClassificacaoRepository;
9 8 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
10 9 import br.gov.planejamento.dipla.protocolo.services.SalvarProtocoloService;
11 10 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorage;
  11 +import org.apache.axis.AxisFault;
12 12 import org.apache.commons.io.FileUtils;
13 13 import org.springframework.beans.factory.annotation.Autowired;
14   -import org.springframework.context.annotation.PropertySource;
15   -import org.springframework.core.env.Environment;
16 14 import org.springframework.scheduling.annotation.Async;
17 15 import org.springframework.stereotype.Component;
18 16 import org.springframework.util.Base64Utils;
19 17  
20   -import java.io.Console;
21   -import java.io.File;
22 18 import java.io.IOException;
  19 +import java.net.MalformedURLException;
23 20 import java.net.URL;
24 21 import java.nio.file.Path;
25   -import java.util.List;
26   -import java.util.Optional;
27   -
28   -import static java.nio.file.FileSystems.getDefault;
29   -
30   -import java.util.concurrent.CompletableFuture;
31   -
32   -import java.util.Date;
33 22 import java.text.DateFormat;
34 23 import java.text.SimpleDateFormat;
  24 +import java.util.*;
35 25  
36   -
37   -
38   -
  26 +import static java.nio.file.FileSystems.getDefault;
39 27  
40 28 @Component
41 29 public class SeiWSClient {
42 30  
43   - @Autowired
44   - private Mailer mailer;
45   -
46   - @Autowired
47   - private ConfiguracaoRepository configuracaoRepository;
48   -
49   - @Autowired
50   - private SalvarProtocoloService salvarProtocoloService;
51   -
52   - @Autowired
53   - private ArquivosRepository arquivosRepository;
54   -
55   - @Autowired
56   - private ArquivoStorage arquivoStorage;
57   -
58   - private String getDateTime() {
59   - DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
60   - Date date = new Date();
61   - return dateFormat.format(date);
62   - }
63   -
64   - @Async
65   - public String enviar(Protocolo protocolo, Long idUsuario, String sei, String tipo) {
66   -
67   - if (sei!=null && tipo!=null && !sei.isEmpty() && tipo.equals("existente")) {
68   - enviarDocumento( protocolo, idUsuario, sei );
69   - } else {
70   -
71   - try {
72   - URL urlEndpoint = new URL( configuracaoRepository.recuperarValor( ConfiguracaoEnum.URL_ENDPOINT ) );
73   - SeiBindingStub seiBindingStub = new SeiBindingStub( urlEndpoint, null );
74   - seiBindingStub.setTimeout( 600000 * 60 );
75   -
76   -
77   - /*Assunto assunto = new Assunto();
78   - assunto.setCodigoEstruturado( configuracaoRepository.recuperarValor( ConfiguracaoEnum.ASSUNTO_CODIGO_ESTRUTURADO ) );
79   - Assunto[] assuntos = {assunto};*/
80   -
81   - Procedimento procedimento = new Procedimento();
82   - if (tipo.equals("novo")) {
83   - procedimento.setNumeroProtocolo( sei );
84   - procedimento.setDataAutuacao( getDateTime() );
85   - }
86   -
87   - procedimento.setAssuntos( recuperaAssunto() );
88   - procedimento.setEspecificacao( configuracaoRepository.recuperarValor( ConfiguracaoEnum.PROCEDIMENTO_ESPECIFICADO ) );
89   -
90   - Interessado interessado = new Interessado();
91   - interessado.setNome( protocolo.getUsuario().getNome() );
92   - interessado.setSigla( "Telefone: " + protocolo.getUsuario().getTelefone() );
93   - Interessado[] interessados = {interessado};
94   -
95   - procedimento.setInteressados( interessados );
96   -
97   - procedimento.setNivelAcesso( configuracaoRepository.recuperarValor( ConfiguracaoEnum.PROCEDIMENTO_NIVEL_ACESSO ) );
98   - procedimento.setIdTipoProcedimento( configuracaoRepository.recuperarValor( ConfiguracaoEnum.PROCEDIMENTO_ID_TIPO_PROCEDIMENTO ) );
99   -
100   - List<Arquivos> arquivosList = arquivosRepository.findByProtocolo( protocolo );
101   -
102   - procedimento.setObservacao(
103   - protocolo.toString() +
104   - "\n" +
105   - "Quantidade Arquivos: " + arquivosList.size()
106   - );
107   -
108   -
109   - //criando o procedimento
110   - RetornoGeracaoProcedimento retornoGeracaoProcedimento = seiBindingStub.gerarProcedimento(
111   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.SIGLA_SISTEMA ),
112   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.IDENTIFICACAO_SERVICO ),
113   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.ID_UNIDADE ),
114   - procedimento,
115   - null,
116   - null,
117   - null,
118   - "N",
119   - "N",
120   - null,
121   - null,
122   - "N",
123   - null,
124   - null );
125   -
126   -
127   - arquivosList.forEach( arquivo -> {
128   - try {
129   - Documento documento = new Documento();
130   - documento.setIdProcedimento( retornoGeracaoProcedimento.getProcedimentoFormatado()
131   - .replace( ".", "" )
132   - .replace( "/", "" )
133   - .replace( "-", "" ) );
134   - documento.setObservacao( protocolo.toString());
135   - documento.setDescricao( arquivo.getDescricaoDocumento() );
136   - documento.setNomeArquivo( arquivo.getNomeOriginal() );
137   - documento.setTipo( configuracaoRepository.recuperarValor( ConfiguracaoEnum.DOCUMENTO_TIPO ) );
138   - //documento.setIdSerie(env.getProperty("documento.id-serie")); //TODO: Alterar para pegar da combo Tipo Documento
139   - documento.setIdSerie( arquivo.getTipoDocumento().getCodigoSei() ); //Tipo documento vindo do banco de dados
140   - documento.setData( protocolo.getDataFormatada() );
141   - documento.setNivelAcesso( configuracaoRepository.recuperarValor( ConfiguracaoEnum.DOCUMENTO_NIVEL_ACESSO ) );
142   -
143   - Path path = getDefault().getPath( configuracaoRepository.recuperarValor( ConfiguracaoEnum.STORAGE_PATH ) ).resolve( arquivo.getNome() );
144   - documento.setConteudo( Base64Utils.encodeToString( FileUtils.readFileToByteArray( path.toFile() ) ) );
145   -
146   - seiBindingStub.incluirDocumento(
147   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.SIGLA_SISTEMA ),
148   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.IDENTIFICACAO_SERVICO ),
149   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.ID_UNIDADE ),
150   - documento
151   - );
152   - } catch (IOException e) {
153   - protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage() );
154   - throw new RuntimeException( e.getMessage() );
155   - }
156   - } );
157   -
158   - protocolo.setLinkSEI(retornoGeracaoProcedimento.getLinkAcesso());
159   - protocolo.setNupe( retornoGeracaoProcedimento.getProcedimentoFormatado() );
160   - salvarProtocoloService.aprovar( protocolo, idUsuario );
161   -
162   - //System.out.println("NUP TEMPORÃ�RIO");
163   - //System.out.println(protocolo.getEmail1());
164   -
165   - protocolo.setArquivosList(arquivosList);
166   - mailer.enviarAceite( protocolo );
167   -
168   - /*arquivosList.forEach( arquivo -> {
169   - arquivoStorage.excluir( arquivo.getNome() );
170   - } );*/
171   -
172   -
173   - return retornoGeracaoProcedimento.getProcedimentoFormatado();
174   -
175   - } catch (Exception e) {
176   - protocolo.setErroWs("[ERRO GERAR PROCEDIMENTO] " + e.getMessage() );
177   - e.printStackTrace();
178   - rollback( protocolo, e.getMessage() );
179   - }
180   - }
181   -
182   - return null;
183   - }
184   -
185   - /**
186   - *
187   - * @return array
188   - */
189   - private Assunto[] recuperaAssunto() {
190   - Assunto assunto = new Assunto();
191   - assunto.setCodigoEstruturado( configuracaoRepository.recuperarValor( ConfiguracaoEnum.ASSUNTO_CODIGO_ESTRUTURADO ) );
192   - Assunto[] assuntos = {assunto};
193   - return assuntos;
194   - }
195   -
196   - private void rollback(Protocolo protocolo, String msgErro) {
197   - protocolo.setNupe( null );
198   - salvarProtocoloService.pendente( protocolo );
199   - mailer.enviarEmailErroEnvioSEI( protocolo, msgErro );
200   - }
201   -
202   - public String enviarDocumento(Protocolo protocolo, Long idUsuario, String sei) {
203   - String observacaoAnterior="";
204   - try {
205   -
206   - URL urlEndpoint = new URL( configuracaoRepository.recuperarValor( ConfiguracaoEnum.URL_ENDPOINT ) );
207   - SeiBindingStub seiBindingStub = new SeiBindingStub( urlEndpoint, null );
208   - seiBindingStub.setTimeout( 600000 * 60 );
209   -
210   - List<Arquivos> arquivosList = arquivosRepository.findByProtocolo( protocolo );
211   -
212   - arquivosList.forEach( arquivo -> {
213   - try {
214   - Documento documento = new Documento();
215   - //documento.setIdProcedimento( sei );
216   - documento.setIdProcedimento( sei
217   - .replace( ".", "" )
218   - .replace( "/", "" )
219   - .replace( "-", "" ) );
220   - documento.setObservacao( protocolo.toString());
221   - documento.setDescricao( arquivo.getDescricaoDocumento() );
222   - documento.setNomeArquivo( arquivo.getNomeOriginal() );
223   - documento.setTipo( configuracaoRepository.recuperarValor( ConfiguracaoEnum.DOCUMENTO_TIPO ) );
224   - //documento.setIdSerie(env.getProperty("documento.id-serie")); //TODO: Alterar para pegar da combo Tipo Documento
225   - documento.setIdSerie( arquivo.getTipoDocumento().getCodigoSei() ); //Tipo documento vindo do banco de dados
226   - documento.setData( protocolo.getDataFormatada() );
227   - documento.setNivelAcesso( configuracaoRepository.recuperarValor( ConfiguracaoEnum.DOCUMENTO_NIVEL_ACESSO ) );
228   -
229   - Path path = getDefault().getPath( configuracaoRepository.recuperarValor( ConfiguracaoEnum.STORAGE_PATH ) ).resolve( arquivo.getNome() );
230   - documento.setConteudo( Base64Utils.encodeToString( FileUtils.readFileToByteArray( path.toFile() ) ) );
231   -
232   - seiBindingStub.incluirDocumento(
233   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.SIGLA_SISTEMA ),
234   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.IDENTIFICACAO_SERVICO ),
235   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.ID_UNIDADE ),
236   - documento
237   - );
238   - } catch (IOException e) {
239   - protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage() );
240   - throw new RuntimeException( e.getMessage() );
241   - }
242   - } );
243   -
244   - protocolo.setNupe( sei );
245   - //protocolo.setNupe( retornoGeracaoProcedimento.getProcedimentoFormatado() );
246   - salvarProtocoloService.aprovar( protocolo, idUsuario );
247   -
248   - protocolo.setArquivosList(arquivosRepository.findByProtocolo(protocolo));
249   - mailer.enviarAceite( protocolo );
250   -
251   - /*arquivosList.forEach( arquivo -> {
252   - arquivoStorage.excluir( arquivo.getNome() );
253   - } );*/
254   -
255   -
256   - return sei;
257   -
258   -
259   - } catch (Exception e) {
260   - e.printStackTrace();
261   - rollback( protocolo, e.getMessage() );
262   - }
263   -
264   - return null;
265   -
266   - }
267   - public RetornoConsultaProcedimento consultarProtocoloSei(String sei) {
268   - Optional<String> retorno = Optional.ofNullable(null);
269   - RetornoConsultaProcedimento retornoConsultaProcedimento = new RetornoConsultaProcedimento();
270   - try {
271   - URL urlEndpoint = new URL( configuracaoRepository.recuperarValor( ConfiguracaoEnum.URL_ENDPOINT ) );
272   - SeiBindingStub seiBindingStub = new SeiBindingStub( urlEndpoint, null );
273   - retornoConsultaProcedimento = seiBindingStub.consultarProcedimento(
274   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.SIGLA_SISTEMA ),
275   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.IDENTIFICACAO_SERVICO ),
276   - configuracaoRepository.recuperarValor( ConfiguracaoEnum.ID_UNIDADE ),
277   - sei,
278   - "S",
279   - "S",
280   - "S",
281   - "S",
282   - "S",
283   - "S",
284   - "S",
285   - "S",
286   - "S"
287   - );
288   - }catch(Exception e) {
289   - e.printStackTrace();
290   - }
291   - return retornoConsultaProcedimento;
292   - }
293   -
294   -
  31 + @Autowired
  32 + private Mailer mailer;
  33 +
  34 + @Autowired
  35 + private ConfiguracaoRepository configuracaoRepository;
  36 +
  37 + @Autowired
  38 + private ClassificacaoRepository classificacaoRepository;
  39 +
  40 + @Autowired
  41 + private SalvarProtocoloService salvarProtocoloService;
  42 +
  43 + @Autowired
  44 + private ArquivosRepository arquivosRepository;
  45 +
  46 + @Autowired
  47 + private ArquivoStorage arquivoStorage;
  48 +
  49 + private String getDateTime() {
  50 + DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
  51 + Date date = new Date();
  52 + return dateFormat.format(date);
  53 + }
  54 +
  55 + @Async
  56 + public String enviar(Protocolo protocolo, Long idUsuario, String sei, String tipo, String idSei) throws Exception {
  57 + Map<String, String> map = new HashMap<String, String>();
  58 + if (idSei != null) {
  59 + Optional<Classificacao> classificacaoConfig = classificacaoRepository.findByCodigo(Long.parseLong(idSei));
  60 + if (classificacaoConfig.isPresent()) {
  61 + Classificacao c = classificacaoConfig.get();
  62 + Iterator<Configuracao> itr = c.getConfiguracoes().iterator();
  63 + while (itr.hasNext()) {
  64 + Configuracao conf = itr.next();
  65 + map.put(conf.getNome(), conf.getValor());
  66 + }
  67 + /**
  68 + * Envio para o SEI Definido
  69 + */
  70 + this.enviarDocumentoComSei(protocolo, idUsuario, sei, tipo, map, idSei);
  71 + }
  72 + } else {
  73 + throw new Exception("[ERRO - idSei null]");
  74 + }
  75 + return null;
  76 + }
  77 +
  78 + /**
  79 + *
  80 + * @return array
  81 + */
  82 + private Assunto[] recuperaAssunto() {
  83 + Assunto assunto = new Assunto();
  84 + assunto.setCodigoEstruturado(
  85 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.ASSUNTO_CODIGO_ESTRUTURADO));
  86 + Assunto[] assuntos = { assunto };
  87 + return assuntos;
  88 + }
  89 +
  90 + private void rollback(Protocolo protocolo, String msgErro) {
  91 + protocolo.setNupe(null);
  92 + salvarProtocoloService.pendente(protocolo);
  93 + mailer.enviarEmailErroEnvioSEI(protocolo, msgErro);
  94 + }
  95 +
  96 + /**
  97 + *
  98 + *
  99 + *
  100 + *
  101 + *
  102 + */
  103 +
  104 + private SeiBindingStub montarURLEndPoint(String endPoint) throws MalformedURLException, AxisFault {
  105 + URL urlEndpoint = new URL(endPoint);
  106 + SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
  107 + return seiBindingStub;
  108 + }
  109 +
  110 + private Assunto[] montarAssunto(String assuntoCodigoEstruturado) {
  111 + Assunto assunto = new Assunto();
  112 + assunto.setCodigoEstruturado(assuntoCodigoEstruturado); // Tipo de assunto
  113 + Assunto[] assuntos = { assunto };
  114 + return assuntos;
  115 + }
  116 +
  117 + private Procedimento montarProcedimento(Assunto[] assuntos, Map<String, String> mapConfig, Protocolo protocolo, int size) {
  118 + Procedimento procedimento = new Procedimento();
  119 + procedimento.setAssuntos(assuntos);
  120 + procedimento.setEspecificacao(mapConfig.get("PROCEDIMENTO_ESPECIFICADO"));
  121 + procedimento.setObservacao(protocolo.toString() + "\n" + "Quantidade Arquivos: " + size);
  122 + procedimento.setNivelAcesso(mapConfig.get("PROCEDIMENTO_NIVEL_ACESSO")); // 0 = Publico, 1 = Restrito, 2 = Sigiloso
  123 + procedimento.setIdTipoProcedimento(mapConfig.get("PROCEDIMENTO_ID_TIPO_PROCEDIMENTO")); // Tipo de Processo => Adesão de atas
  124 + procedimento.setIdHipoteseLegal(mapConfig.get("PROCEDIMENTO_HIPOTESE_LEGAL"));
  125 + return procedimento;
  126 + }
  127 +
  128 + private Interessado[] montarInteressado(Protocolo protocolo) {
  129 + Interessado interessado = new Interessado();
  130 + interessado.setNome(protocolo.getUsuario().getNome());
  131 + interessado.setSigla("Telefone: " + protocolo.getUsuario().getTelefone());
  132 + Interessado[] interessados = { interessado };
  133 + return interessados;
  134 + }
  135 +
  136 + private Documento montarDocumento(String idProcedimento, String descricao, String observacao, String nomeArquivo,
  137 + String conteudo, String tipo, String idSerie, String data) throws IOException {
  138 + Documento documento = new Documento();
  139 + documento.setIdProcedimento(idProcedimento);
  140 + documento.setDescricao(descricao);
  141 + documento.setObservacao(observacao);
  142 + documento.setNomeArquivo(nomeArquivo);
  143 + documento.setConteudo(conteudo);
  144 + documento.setTipo(tipo);
  145 + documento.setIdSerie(idSerie);
  146 + documento.setData(data);
  147 +
  148 + return documento;
  149 + }
  150 +
  151 + /**
  152 + * Função para enviar para múltiplos SEI's
  153 + *
  154 + * @author Matheus de Carvalho Sobrinho
  155 + * @param protocolo
  156 + * @param idUsuario
  157 + * @param sei
  158 + * @param tipo
  159 + * @param mapConfig
  160 + * @param idSei
  161 + * @return
  162 + */
  163 + public String enviarDocumentoComSei(Protocolo protocolo, Long idUsuario, String sei, String tipo,
  164 + Map<String, String> mapConfig, String idSei) {
  165 +
  166 + if (sei != null && tipo != null && !sei.isEmpty() && tipo.equals("existente")) {
  167 + enviarDocumento(protocolo, idUsuario, sei, mapConfig, idSei);
  168 + } else {
  169 + try {
  170 + List<Arquivos> arquivosList = arquivosRepository.findByProtocolo(protocolo);
  171 + SeiBindingStub seiBindingStubMontado = this.montarURLEndPoint(mapConfig.get("URL_ENDPOINT"));
  172 + Assunto[] assuntos = this.montarAssunto(mapConfig.get("ASSUNTO_CODIGO_ESTRUTURADO"));
  173 + Interessado[] interessados = this.montarInteressado(protocolo);
  174 + Procedimento procedimento = this.montarProcedimento(assuntos, mapConfig, protocolo, arquivosList.size());
  175 + procedimento.setInteressados(interessados);
  176 +
  177 + // Verificar se é um tipo informado
  178 + if (tipo.equals("novo")) {
  179 + procedimento.setNumeroProtocolo(sei);
  180 + procedimento.setDataAutuacao(getDateTime());
  181 + }
  182 +
  183 + procedimento.setIdTipoProcedimento(mapConfig.get("PROCEDIMENTO_ID_TIPO_PROCEDIMENTO"));
  184 +
  185 + RetornoGeracaoProcedimento retornoGeracaoProcedimento = seiBindingStubMontado.gerarProcedimento(
  186 + mapConfig.get("SIGLA_SISTEMA"), mapConfig.get("IDENTIFICACAO_SERVICO"),
  187 + mapConfig.get("ID_UNIDADE"), procedimento, null, null, null, "S", "N", null, null, null, null,
  188 + null);
  189 +
  190 + arquivosList.forEach(arquivo -> {
  191 + try {
  192 + Path path = getDefault()
  193 + .getPath(configuracaoRepository.recuperarValor(ConfiguracaoEnum.STORAGE_PATH))
  194 + .resolve(arquivo.getNome());
  195 +
  196 + Documento documento = this.montarDocumento(
  197 + retornoGeracaoProcedimento.getProcedimentoFormatado().replace(".", "").replace("/", "")
  198 + .replace("-", ""),
  199 + arquivo.getDescricaoDocumento(),
  200 + protocolo.toString() + "\n" + "Quantidade Arquivos: " + arquivosList.size(),
  201 + arquivo.getNomeOriginal(),
  202 + Base64Utils.encodeToString(FileUtils.readFileToByteArray(path.toFile())),
  203 + mapConfig.get("DOCUMENTO_TIPO"), recuperarCodigoSeiDeArquivo(arquivo, idSei),
  204 + protocolo.getDataFormatada());
  205 +
  206 + documento.setNivelAcesso(mapConfig.get("DOCUMENTO_NIVEL_ACESSO"));
  207 + documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(path.toFile())));
  208 +
  209 + RetornoInclusaoDocumento retornoInclusaoDeDocumento = seiBindingStubMontado.incluirDocumento(
  210 + mapConfig.get("SIGLA_SISTEMA"), mapConfig.get("IDENTIFICACAO_SERVICO"),
  211 + mapConfig.get("ID_UNIDADE"), documento);
  212 + System.out.println("Link = " + retornoInclusaoDeDocumento.getLinkAcesso());
  213 +
  214 + } catch (IOException e) {
  215 + protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage());
  216 + throw new RuntimeException(e.getMessage());
  217 + }
  218 + });
  219 +
  220 + protocolo.setLinkSEI(retornoGeracaoProcedimento.getLinkAcesso());
  221 + protocolo.setNupe(retornoGeracaoProcedimento.getProcedimentoFormatado());
  222 + salvarProtocoloService.aprovar(protocolo, idUsuario);
  223 +
  224 + mailer.enviarAceite(protocolo);
  225 +
  226 + return retornoGeracaoProcedimento.getProcedimentoFormatado();
  227 + } catch (Exception e) {
  228 + protocolo.setErroWs("[ERRO GERAR PROCEDIMENTO] " + e.getMessage());
  229 + e.printStackTrace();
  230 + rollback(protocolo, e.getMessage());
  231 + }
  232 + }
  233 +
  234 + return null;
  235 + }
  236 +
  237 + public String enviarDocumento(Protocolo protocolo, Long idUsuario, String sei, Map<String, String> mapConfig,
  238 + String idSei) {
  239 + try {
  240 +
  241 + URL urlEndpoint = new URL(mapConfig.get("URL_ENDPOINT"));
  242 + SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
  243 + seiBindingStub.setTimeout(600000 * 60);
  244 +
  245 + List<Arquivos> arquivosList = arquivosRepository.findByProtocolo(protocolo);
  246 +
  247 + arquivosList.forEach(arquivo -> {
  248 + try {
  249 + Documento documento = new Documento();
  250 + // documento.setIdProcedimento( sei );
  251 + documento.setIdProcedimento(sei.replace(".", "").replace("/", "").replace("-", ""));
  252 + documento.setObservacao(protocolo.toString());
  253 + documento.setDescricao(arquivo.getDescricaoDocumento());
  254 + documento.setNomeArquivo(arquivo.getNomeOriginal());
  255 +
  256 + documento.setTipo(mapConfig.get("DOCUMENTO_TIPO"));
  257 + // documento.setIdSerie(env.getProperty("documento.id-serie")); //TODO: Alterar
  258 + // para pegar da combo Tipo Documento
  259 +
  260 + documento.setIdSerie(recuperarCodigoSeiDeArquivo(arquivo, idSei)); // Tipo documento vindo do banco
  261 + // de
  262 + // dados
  263 + documento.setData(protocolo.getDataFormatada());
  264 + documento.setNivelAcesso(mapConfig.get("DOCUMENTO_NIVEL_ACESSO"));
  265 +
  266 + Path path = getDefault()
  267 + .getPath(configuracaoRepository.recuperarValor(ConfiguracaoEnum.STORAGE_PATH))
  268 + .resolve(arquivo.getNome());
  269 + documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(path.toFile())));
  270 +
  271 + seiBindingStub.incluirDocumento(mapConfig.get("SIGLA_SISTEMA"),
  272 + mapConfig.get("IDENTIFICACAO_SERVICO"), mapConfig.get("ID_UNIDADE"), documento);
  273 + } catch (IOException e) {
  274 + protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage());
  275 + throw new RuntimeException(e.getMessage());
  276 + }
  277 + });
  278 +
  279 + protocolo.setNupe(sei);
  280 + salvarProtocoloService.aprovar(protocolo, idUsuario);
  281 +
  282 + protocolo.setArquivosList(arquivosRepository.findByProtocolo(protocolo));
  283 + mailer.enviarAceite(protocolo);
  284 +
  285 + return sei;
  286 + } catch (Exception e) {
  287 + e.printStackTrace();
  288 + rollback(protocolo, e.getMessage());
  289 + }
  290 +
  291 + return null;
  292 +
  293 + }
  294 +
  295 + private String recuperarCodigoSeiDeArquivo(Arquivos arquivo, String idSei) {
  296 + if (idSei.equals("2")) {
  297 + return arquivo.getTipoDocumento().getCodigoSei();
  298 + } else if (idSei.equals("6")) {
  299 + return arquivo.getTipoDocumento().getCodigoSeiMf();
  300 + } else if (idSei.equals("7")) {
  301 + return arquivo.getTipoDocumento().getCodigoSeiMdic();
  302 + }
  303 + return null;
  304 + }
  305 +
  306 + public RetornoConsultaProcedimento consultarProtocoloSei(String sei) {
  307 + Optional<String> retorno = Optional.ofNullable(null);
  308 + RetornoConsultaProcedimento retornoConsultaProcedimento = new RetornoConsultaProcedimento();
  309 + try {
  310 + URL urlEndpoint = new URL(configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_ENDPOINT));
  311 + SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
  312 + retornoConsultaProcedimento = seiBindingStub.consultarProcedimento(
  313 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.SIGLA_SISTEMA),
  314 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.IDENTIFICACAO_SERVICO),
  315 + configuracaoRepository.recuperarValor(ConfiguracaoEnum.ID_UNIDADE), sei, "S", "S", "S", "S", "S",
  316 + "S", "S", "S", "S");
  317 + } catch (Exception e) {
  318 + e.printStackTrace();
  319 + }
  320 + return retornoConsultaProcedimento;
  321 + }
  322 +
  323 +// /**
  324 +// * Enviar para o SEI primeiramente definido
  325 +// *
  326 +// * @param protocolo
  327 +// * @param idUsuario
  328 +// * @param sei
  329 +// * @param tipo
  330 +// * @return
  331 +// */
  332 +// public String enviarSeiPadrao(Protocolo protocolo, Long idUsuario, String sei, String tipo,
  333 +// Map<String, String> mapConfig, String idSei) {
  334 +//
  335 +// if (sei != null && tipo != null && !sei.isEmpty() && tipo.equals("existente")) {
  336 +// enviarDocumentoPadrao(protocolo, idUsuario, sei, mapConfig, idSei);
  337 +// } else {
  338 +//
  339 +// try {
  340 +// URL urlEndpoint = new URL(configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_ENDPOINT));
  341 +// SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
  342 +// seiBindingStub.setTimeout(600000 * 60);
  343 +//
  344 +// Procedimento procedimento = new Procedimento();
  345 +// if (tipo.equals("novo")) {
  346 +// procedimento.setNumeroProtocolo(sei);
  347 +// procedimento.setDataAutuacao(getDateTime());
  348 +// }
  349 +//
  350 +// procedimento.setAssuntos(recuperaAssunto());
  351 +// procedimento.setEspecificacao(
  352 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.PROCEDIMENTO_ESPECIFICADO));
  353 +//
  354 +// Interessado interessado = new Interessado();
  355 +// interessado.setNome(protocolo.getUsuario().getNome());
  356 +// interessado.setSigla("Telefone: " + protocolo.getUsuario().getTelefone());
  357 +// Interessado[] interessados = { interessado };
  358 +//
  359 +// procedimento.setInteressados(interessados);
  360 +//
  361 +// procedimento.setNivelAcesso(
  362 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.PROCEDIMENTO_NIVEL_ACESSO));
  363 +// procedimento.setIdTipoProcedimento(
  364 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.PROCEDIMENTO_ID_TIPO_PROCEDIMENTO));
  365 +//
  366 +// List<Arquivos> arquivosList = arquivosRepository.findByProtocolo(protocolo);
  367 +//
  368 +// procedimento.setObservacao(protocolo.toString() + "\n" + "Quantidade Arquivos: " + arquivosList.size());
  369 +//
  370 +// // criando o procedimento
  371 +// RetornoGeracaoProcedimento retornoGeracaoProcedimento = seiBindingStub.gerarProcedimento(
  372 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.SIGLA_SISTEMA),
  373 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.IDENTIFICACAO_SERVICO),
  374 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.ID_UNIDADE), procedimento, null, null,
  375 +// null, "N", "N", null, null, "N", null, null);
  376 +//
  377 +// arquivosList.forEach(arquivo -> {
  378 +// try {
  379 +// Documento documento = new Documento();
  380 +// documento.setIdProcedimento(retornoGeracaoProcedimento.getProcedimentoFormatado()
  381 +// .replace(".", "").replace("/", "").replace("-", ""));
  382 +// documento.setObservacao(protocolo.toString());
  383 +// documento.setDescricao(arquivo.getDescricaoDocumento());
  384 +// documento.setNomeArquivo(arquivo.getNomeOriginal());
  385 +// documento.setTipo(configuracaoRepository.recuperarValor(ConfiguracaoEnum.DOCUMENTO_TIPO));
  386 +// // documento.setIdSerie(env.getProperty("documento.id-serie")); //TODO: Alterar
  387 +// // para pegar da combo Tipo Documento
  388 +// documento.setIdSerie(arquivo.getTipoDocumento().getCodigoSei()); // Tipo documento vindo do
  389 +// // banco de dados
  390 +// documento.setData(protocolo.getDataFormatada());
  391 +// documento.setNivelAcesso(
  392 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.DOCUMENTO_NIVEL_ACESSO));
  393 +//
  394 +// Path path = getDefault()
  395 +// .getPath(configuracaoRepository.recuperarValor(ConfiguracaoEnum.STORAGE_PATH))
  396 +// .resolve(arquivo.getNome());
  397 +// documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(path.toFile())));
  398 +//
  399 +// seiBindingStub.incluirDocumento(
  400 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.SIGLA_SISTEMA),
  401 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.IDENTIFICACAO_SERVICO),
  402 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.ID_UNIDADE), documento);
  403 +// } catch (IOException e) {
  404 +// protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage());
  405 +// throw new RuntimeException(e.getMessage());
  406 +// }
  407 +// });
  408 +//
  409 +// protocolo.setLinkSEI(retornoGeracaoProcedimento.getLinkAcesso());
  410 +// protocolo.setNupe(retornoGeracaoProcedimento.getProcedimentoFormatado());
  411 +// salvarProtocoloService.aprovar(protocolo, idUsuario);
  412 +//
  413 +// protocolo.setArquivosList(arquivosList);
  414 +// mailer.enviarAceite(protocolo);
  415 +//
  416 +// return retornoGeracaoProcedimento.getProcedimentoFormatado();
  417 +//
  418 +// } catch (Exception e) {
  419 +// protocolo.setErroWs("[ERRO GERAR PROCEDIMENTO] " + e.getMessage());
  420 +// e.printStackTrace();
  421 +// rollback(protocolo, e.getMessage());
  422 +// }
  423 +// }
  424 +//
  425 +// return null;
  426 +// }
  427 +//
  428 +// public String enviarDocumentoPadrao(Protocolo protocolo, Long idUsuario, String sei, Map<String, String> mapConfig,
  429 +// String idSei) {
  430 +// String observacaoAnterior = "";
  431 +// try {
  432 +//
  433 +// URL urlEndpoint = new URL(configuracaoRepository.recuperarValor(ConfiguracaoEnum.URL_ENDPOINT));
  434 +// SeiBindingStub seiBindingStub = new SeiBindingStub(urlEndpoint, null);
  435 +// seiBindingStub.setTimeout(600000 * 60);
  436 +//
  437 +// List<Arquivos> arquivosList = arquivosRepository.findByProtocolo(protocolo);
  438 +//
  439 +// arquivosList.forEach(arquivo -> {
  440 +// try {
  441 +// Documento documento = new Documento();
  442 +// // documento.setIdProcedimento( sei );
  443 +// documento.setIdProcedimento(sei.replace(".", "").replace("/", "").replace("-", ""));
  444 +// documento.setObservacao(protocolo.toString());
  445 +// documento.setDescricao(arquivo.getDescricaoDocumento());
  446 +// documento.setNomeArquivo(arquivo.getNomeOriginal());
  447 +// documento.setTipo(configuracaoRepository.recuperarValor(ConfiguracaoEnum.DOCUMENTO_TIPO));
  448 +// // documento.setIdSerie(env.getProperty("documento.id-serie")); //TODO: Alterar
  449 +// // para pegar da combo Tipo Documento
  450 +// documento.setIdSerie(arquivo.getTipoDocumento().getCodigoSei()); // Tipo documento vindo do banco de
  451 +// // dados
  452 +// documento.setData(protocolo.getDataFormatada());
  453 +// documento.setNivelAcesso(
  454 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.DOCUMENTO_NIVEL_ACESSO));
  455 +//
  456 +// Path path = getDefault()
  457 +// .getPath(configuracaoRepository.recuperarValor(ConfiguracaoEnum.STORAGE_PATH))
  458 +// .resolve(arquivo.getNome());
  459 +// documento.setConteudo(Base64Utils.encodeToString(FileUtils.readFileToByteArray(path.toFile())));
  460 +//
  461 +// seiBindingStub.incluirDocumento(
  462 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.SIGLA_SISTEMA),
  463 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.IDENTIFICACAO_SERVICO),
  464 +// configuracaoRepository.recuperarValor(ConfiguracaoEnum.ID_UNIDADE), documento);
  465 +// } catch (IOException e) {
  466 +// protocolo.setErroWs("[ERRO INCLUIR DOCUMENTO] " + e.getMessage());
  467 +// throw new RuntimeException(e.getMessage());
  468 +// }
  469 +// });
  470 +//
  471 +// protocolo.setNupe(sei);
  472 +// // protocolo.setNupe( retornoGeracaoProcedimento.getProcedimentoFormatado() );
  473 +// salvarProtocoloService.aprovar(protocolo, idUsuario);
  474 +//
  475 +// protocolo.setArquivosList(arquivosRepository.findByProtocolo(protocolo));
  476 +// mailer.enviarAceite(protocolo);
  477 +//
  478 +// /*
  479 +// * arquivosList.forEach( arquivo -> { arquivoStorage.excluir( arquivo.getNome()
  480 +// * ); } );
  481 +// */
  482 +//
  483 +// return sei;
  484 +//
  485 +// } catch (Exception e) {
  486 +// e.printStackTrace();
  487 +// rollback(protocolo, e.getMessage());
  488 +// }
  489 +//
  490 +// return null;
  491 +//
  492 +// }
  493 +
  494 +
295 495 }
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/services/AutoCadastroService.java
1 1 package br.gov.planejamento.dipla.protocolo.services;
2 2  
3 3 import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;
4   -import br.gov.planejamento.dipla.protocolo.entities.AcaoEnum;
5   -import br.gov.planejamento.dipla.protocolo.entities.Grupo;
6   -import br.gov.planejamento.dipla.protocolo.entities.LoginAttempt;
7   -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
8   -import br.gov.planejamento.dipla.protocolo.entities.Usuario;
9   -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
  4 +import br.gov.planejamento.dipla.protocolo.entities.*;
10 5 import br.gov.planejamento.dipla.protocolo.mail.Mailer;
11   -import br.gov.planejamento.dipla.protocolo.repositories.GrupoRepository;
12   -import br.gov.planejamento.dipla.protocolo.repositories.LoginAttemptRepository;
13   -import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository;
14   -import br.gov.planejamento.dipla.protocolo.repositories.UsuarioBrasilCidadaoRepository;
15   -import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
  6 +import br.gov.planejamento.dipla.protocolo.repositories.*;
16 7 import br.gov.planejamento.dipla.protocolo.services.exeptions.EmailUsuarioJaCadastradoException;
17 8 import br.gov.planejamento.dipla.protocolo.services.exeptions.SenhaObrigatoriaUsuarioException;
18   -
19 9 import org.apache.commons.codec.digest.DigestUtils;
20 10 import org.springframework.beans.factory.annotation.Autowired;
21 11 import org.springframework.security.crypto.password.PasswordEncoder;
... ... @@ -23,9 +13,6 @@ import org.springframework.stereotype.Service;
23 13 import org.springframework.transaction.annotation.Transactional;
24 14 import org.springframework.util.Base64Utils;
25 15 import org.springframework.util.StringUtils;
26   -import org.springframework.web.bind.annotation.GetMapping;
27   -import org.springframework.web.bind.annotation.PathVariable;
28   -import org.springframework.web.servlet.ModelAndView;
29 16  
30 17 import java.util.ArrayList;
31 18 import java.util.List;
... ... @@ -93,8 +80,8 @@ public class AutoCadastroService {
93 80 }
94 81  
95 82 @Transactional
96   - public void cadastrarBrasilCidadao(UsuarioBrasilCidadaoDto usuarioretorno) {
97   -
  83 + public Usuario cadastrarBrasilCidadao(UsuarioBrasilCidadaoDto usuarioretorno) {
  84 +
98 85 UsuarioBrasilCidadao usuarioBrasilCidadao= new UsuarioBrasilCidadao();
99 86 Usuario usuario = new Usuario();
100 87 usuario.setNome(usuarioretorno.getNome());
... ... @@ -104,18 +91,22 @@ public class AutoCadastroService {
104 91 List<Grupo> grupos = new ArrayList<>();
105 92 grupos.add(grupoRepository.findOne(3L));
106 93 usuario.setGrupos(grupos);
107   -
  94 +
108 95 salvar(usuario,grupos,false,false);
109   -
  96 +
  97 + return usuario;
  98 +
110 99 }
111 100  
112   - public void migrarBrasilCidadao(UsuarioBrasilCidadaoDto usuarioretorno) {
  101 + public UsuarioBrasilCidadao migrarBrasilCidadao(UsuarioBrasilCidadaoDto usuarioretorno, Usuario usuario) {
113 102 UsuarioBrasilCidadao usuarioBrasilCidadao= new UsuarioBrasilCidadao();
114   - //Salvando CPF
115   - usuarioBrasilCidadao.setCpf(usuarioretorno.getCpf());
116   - usuarioBrasilCidadao.setToken(usuarioretorno.getToken());
117   - usuarioBrasilCidadao.setAtivo(Boolean.FALSE);
118   - usuarioBrasilCidadaoRepository.save(usuarioBrasilCidadao);
  103 + usuarioBrasilCidadao.setEmail(usuarioretorno.getEmail());
  104 + usuarioBrasilCidadao.setUsuario(usuario);
  105 + usuarioBrasilCidadao.setCpf(usuarioretorno.getCpf());
  106 + usuarioBrasilCidadao.setToken(usuarioretorno.getToken());
  107 + usuarioBrasilCidadao.setAtivo(Boolean.FALSE);
  108 + usuarioBrasilCidadaoRepository.save(usuarioBrasilCidadao);
  109 + return usuarioBrasilCidadao;
119 110 }
120 111 public void atualizarBrasilCidadao(UsuarioBrasilCidadaoDto usuarioretorno, UsuarioBrasilCidadao usuarioBrasilCidadao, Boolean atualizaEmail) {
121 112  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/services/BrasilCidadaoService.java
... ... @@ -6,44 +6,38 @@
6 6 package br.gov.planejamento.dipla.protocolo.services;
7 7  
8 8 import br.gov.planejamento.dipla.protocolo.config.BrasilCidadaoConfig;
9   -import br.gov.planejamento.dipla.protocolo.dto.TokenRetornoDto;
10 9 import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;
11   -import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
12   -import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;
13 10 import br.gov.planejamento.dipla.protocolo.entities.Usuario;
14 11 import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
15   -import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
16   -import br.gov.planejamento.dipla.protocolo.repositories.TiposDocumentoRepository;
17 12 import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
18   -import br.gov.planejamento.dipla.protocolo.security.BrasilCidadaoUserDetails;
19 13 import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;
20   -
  14 +import org.jose4j.json.internal.json_simple.JSONArray;
  15 +import org.jose4j.json.internal.json_simple.JSONObject;
  16 +import org.jose4j.json.internal.json_simple.parser.JSONParser;
  17 +import org.jose4j.jwk.PublicJsonWebKey;
  18 +import org.jose4j.jwt.JwtClaims;
  19 +import org.jose4j.jwt.consumer.JwtConsumer;
  20 +import org.jose4j.jwt.consumer.JwtConsumerBuilder;
21 21 import org.springframework.beans.factory.annotation.Autowired;
22   -import org.springframework.http.HttpEntity;
23   -import org.springframework.http.HttpMethod;
24   -import org.springframework.http.ResponseEntity;
25 22 import org.springframework.http.converter.StringHttpMessageConverter;
26 23 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
27 24 import org.springframework.security.core.GrantedAuthority;
28 25 import org.springframework.security.core.authority.SimpleGrantedAuthority;
29   -import org.springframework.security.core.context.SecurityContextHolder;
30 26 import org.springframework.stereotype.Service;
31   -import org.springframework.transaction.annotation.Transactional;
32 27 import org.springframework.web.client.RestTemplate;
33   -import org.springframework.web.servlet.ModelAndView;
34   -
35   -import com.fasterxml.jackson.databind.ObjectMapper;
36 28  
  29 +import javax.net.ssl.HttpsURLConnection;
  30 +import java.io.BufferedReader;
  31 +import java.io.InputStreamReader;
  32 +import java.net.URL;
37 33 import java.nio.charset.Charset;
38   -import java.util.Collection;
39   -import java.util.HashSet;
40   -import java.util.List;
41   -import java.util.Optional;
42   -import java.util.Set;
  34 +import java.util.*;
  35 +
  36 +
43 37  
44 38 /**
45 39 *
46   - * @author leonardo
  40 + * @author leonardo, Jose Fortes
47 41 */
48 42 @Service
49 43 public class BrasilCidadaoService {
... ... @@ -55,63 +49,148 @@ public class BrasilCidadaoService {
55 49  
56 50 @Autowired
57 51 private BrasilCidadaoConfig brasilCidadaoOpenIdConnectConfig;
58   -
59   -
60   - public UsuarioBrasilCidadaoDto autenticarBrasilCidadao(String code) throws Exception{
61   - UsuarioBrasilCidadaoDto usuarioretorno = new UsuarioBrasilCidadaoDto();
62   -
63   - RestTemplate restTemplate = new RestTemplate();
64   - restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
65   -
66   - HttpEntity<String> entityToken = new HttpEntity<String>(brasilCidadaoOpenIdConnectConfig.gerarRequisicaoAtributo(code), brasilCidadaoOpenIdConnectConfig.gerarRequisicaoHeader());
67   -
68   - //Enviando autorização com code
69   -
70   - ResponseEntity<String> respEntToken = restTemplate.exchange(brasilCidadaoOpenIdConnectConfig.gerarUrlToken(), HttpMethod.POST, entityToken, String.class);
71   -
72   - if(respEntToken.getStatusCodeValue()!=200) {
73   - throw new Exception("Erro no recebimento do token");
74   - }
75   -
76   - //Capturando token
77   - TokenRetornoDto retorno = new ObjectMapper().readValue(respEntToken.getBody().toString(), TokenRetornoDto.class);
78   -
79   - //Enviando token
80   - ResponseEntity<String> respEntUsuario = restTemplate.exchange(brasilCidadaoOpenIdConnectConfig.gerarUrlDadosUsuarios(retorno.getAccess_token()),HttpMethod.GET,null,String.class);
81   -
82   - if(respEntUsuario.getStatusCodeValue()!=200) {
83   - throw new Exception("Erro no recebimento dos dados do usuario");
84   - }
85   -
86   - //Capturando dados usuario
87   - usuarioretorno = new ObjectMapper().readValue(respEntUsuario.getBody().toString() , UsuarioBrasilCidadaoDto.class);
88   - usuarioretorno.setToken(retorno.getAccess_token());
89   -
90   - return usuarioretorno;
91   - }
92   -
93   - public UsernamePasswordAuthenticationToken autenticarProtocolo(UsuarioBrasilCidadaoDto usuarioretorno) throws Exception {
94   - Optional<UsuarioBrasilCidadao> usuarioBrasilCidadao = usuarioRepository.buscarBrasilCidadao(usuarioretorno.getCpf());
95   -
96   - BrasilCidadaoUserDetails userDetails = new BrasilCidadaoUserDetails(usuarioBrasilCidadao.get().getUsuario().getEmail());
97   - Optional<Usuario> usuario = usuarioRepository.findByEmail(usuarioBrasilCidadao.get().getUsuario().getEmail());
98   -
99   -
100   - List<String> permissoes = usuarioRepository.permissoes(usuario.get());
  52 +
  53 +
  54 + public UsernamePasswordAuthenticationToken autenticarProtocolo(UsuarioBrasilCidadaoDto usuarioretorno) throws Exception {
  55 + Optional<UsuarioBrasilCidadao> usuarioBrasilCidadao = usuarioRepository.buscarBrasilCidadao(usuarioretorno.getCpf());
  56 +
  57 + Optional<Usuario> usuario = usuarioRepository.findByEmail(usuarioBrasilCidadao.get().getUsuario().getEmail());
  58 +
101 59 usuario.get().setTemPerfilBrasilCidadao(true);
102   -
103   - UsuarioSistema usuarioSistema = new UsuarioSistema(usuario.get(),getPermissoes(),true);
104   -
105   - UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(
106   - usuarioSistema,
107   - usuarioretorno.getToken(),getPermissoes());
  60 +
  61 + UsuarioSistema usuarioSistema = new UsuarioSistema(usuario.get(), getPermissoes(), true);
  62 +
  63 + UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(
  64 + usuarioSistema,
  65 + usuarioretorno.getToken(), getPermissoes());
108 66 return auth;
109   - }
110   -
111   - private Collection<? extends GrantedAuthority> getPermissoes() {
  67 + }
  68 +
  69 + private Collection<? extends GrantedAuthority> getPermissoes() {
112 70 Set<SimpleGrantedAuthority> authorities = new HashSet<>();
113 71 authorities.add(new SimpleGrantedAuthority("ROLE_BRASILCIDADAO"));
114 72 return authorities;
115 73 }
116 74  
  75 + public UsuarioBrasilCidadaoDto autenticarBrasilCidadao(String code) throws Exception {
  76 + UsuarioBrasilCidadaoDto usuarioRetorno = new UsuarioBrasilCidadaoDto();
  77 +
  78 + RestTemplate restTemplate = new RestTemplate();
  79 + restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
  80 +
  81 + //Enviando autorização com code
  82 + try {
  83 + String idToken = receberToken(code);
  84 + usuarioRetorno = recuperarInformacoesUsuarioBrasilCidadao(idToken);
  85 + return usuarioRetorno;
  86 + } catch (Exception e) {
  87 + msgErro = e.getMessage();
  88 + System.out.println(msgErro);
  89 + }
  90 +
  91 + return null;
  92 + }
  93 +
  94 + private String receberToken(String code) throws Exception{
  95 + String idToken = "";
  96 + try {
  97 + String tokens = extractToken(code);
  98 + org.jose4j.json.internal.json_simple.parser.JSONParser parser = new JSONParser();
  99 + org.jose4j.json.internal.json_simple.JSONObject tokensJson = (JSONObject) parser.parse(tokens);
  100 + idToken = (String) tokensJson.get("id_token");
  101 + } catch (Exception e) {
  102 + msgErro = e.getMessage();
  103 + System.out.println(msgErro);
  104 + }
  105 +
  106 + return idToken;
  107 + }
  108 +
  109 + private String extractToken(String code) throws Exception {
  110 + String retorno = "";
  111 + URL url = new URL(brasilCidadaoOpenIdConnectConfig.gerarURLToken(code));
  112 + HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
  113 + conn.setRequestMethod("POST");
  114 + conn.setRequestProperty("Accept", "application/json");
  115 + conn.setRequestProperty("authorization", String.format("Basic %s",
  116 + Base64.getEncoder().encodeToString(String.format("%s:%s", brasilCidadaoOpenIdConnectConfig.obterClientID(), brasilCidadaoOpenIdConnectConfig.obterClientSecret()).getBytes())));
  117 +
  118 + if (conn.getResponseCode() != 200) {
  119 + throw new RuntimeException("Falhou : HTTP error code : " + conn.getResponseCode());
  120 + }
  121 +
  122 + BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
  123 +
  124 + String tokens = null;
  125 + while ((tokens = br.readLine()) != null) {
  126 + retorno += tokens;
  127 + }
  128 +
  129 + conn.disconnect();
  130 +
  131 + return retorno;
  132 + }
  133 +
  134 + private UsuarioBrasilCidadaoDto recuperarInformacoesUsuarioBrasilCidadao(String idToken) throws Exception{
  135 + JwtClaims idTokenJwtClaims;
  136 + try {
  137 + idTokenJwtClaims = processToClaims(idToken);
  138 + } catch (Exception e) {
  139 + msgErro = e.getMessage();
  140 + System.out.println(msgErro);
  141 + throw new Exception(e);
  142 + }
  143 +
  144 + UsuarioBrasilCidadaoDto usuarioBrasilCidadaoDto = new UsuarioBrasilCidadaoDto();
  145 + usuarioBrasilCidadaoDto.setEmail(idTokenJwtClaims.getClaimValue("email").toString());
  146 + usuarioBrasilCidadaoDto.setNome(idTokenJwtClaims.getStringClaimValue("name").toString());
  147 + usuarioBrasilCidadaoDto.setCpf(idTokenJwtClaims.getClaimValue("sub").toString());
  148 + return usuarioBrasilCidadaoDto;
  149 + }
  150 +
  151 + private JwtClaims processToClaims(String token) throws Exception {
  152 + URL url = new URL(brasilCidadaoOpenIdConnectConfig.obterURLDadosUsuario());
  153 + HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
  154 + conn.setRequestMethod("GET");
  155 + conn.setRequestProperty("Accept", "application/json");
  156 + if (conn.getResponseCode() != 200) {
  157 + throw new RuntimeException("Falhou : HTTP error code : " + conn.getResponseCode());
  158 + }
  159 +
  160 + BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
  161 +
  162 + String ln = null, jwk = "";
  163 + while ((ln = br.readLine()) != null) {
  164 + jwk += ln;
  165 + }
  166 +
  167 + conn.disconnect();
  168 +
  169 + JSONParser parser = new JSONParser();
  170 + JSONObject tokensJson = (JSONObject) parser.parse(jwk);
  171 +
  172 + JSONArray keys = (JSONArray) tokensJson.get("keys");
  173 +
  174 + JSONObject keyJSONObject = (JSONObject) keys.get(0);
  175 +
  176 + String key = keyJSONObject.toJSONString();
  177 +
  178 + PublicJsonWebKey pjwk = PublicJsonWebKey.Factory.newPublicJwk(key);
  179 +
  180 + JwtConsumer jwtConsumer = new JwtConsumerBuilder().setRequireExpirationTime() // Exige que o token tenha um
  181 + // tempo de validade
  182 + .setExpectedAudience(brasilCidadaoOpenIdConnectConfig.obterClientID()).setMaxFutureValidityInMinutes(60) // Testa se o tempo de validade do
  183 + // access token é inferior ou igual
  184 + // ao tempo máximo estipulado (Tempo
  185 + // padrão de 60 minutos)
  186 + .setAllowedClockSkewInSeconds(30) // Esta é uma boa prática.
  187 + .setRequireSubject() // Exige que o token tenha um Subject.
  188 + .setExpectedIssuer(brasilCidadaoOpenIdConnectConfig.obterURLBrasilCidadao() + "/") // Verifica a procedência do token.
  189 + .setVerificationKey(pjwk.getPublicKey()) // Verifica a assinatura com a public key fornecida.
  190 + .build(); // Cria a instância JwtConsumer.
  191 +
  192 + return jwtConsumer.processToClaims(token);
  193 + }
  194 +
  195 +
117 196 }
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/services/CadastroUsuarioService.java
... ... @@ -5,13 +5,10 @@
5 5 */
6 6 package br.gov.planejamento.dipla.protocolo.services;
7 7  
8   -import br.gov.planejamento.dipla.protocolo.dto.UsuarioBrasilCidadaoDto;
9 8 import br.gov.planejamento.dipla.protocolo.entities.AcaoEnum;
10   -import br.gov.planejamento.dipla.protocolo.entities.Grupo;
11 9 import br.gov.planejamento.dipla.protocolo.entities.Usuario;
12   -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
13 10 import br.gov.planejamento.dipla.protocolo.mail.Mailer;
14   -import br.gov.planejamento.dipla.protocolo.repositories.*;
  11 +import br.gov.planejamento.dipla.protocolo.repositories.UsuarioRepository;
15 12 import br.gov.planejamento.dipla.protocolo.services.exeptions.EmailUsuarioJaCadastradoException;
16 13 import br.gov.planejamento.dipla.protocolo.services.exeptions.SenhaObrigatoriaUsuarioException;
17 14 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -22,8 +19,6 @@ import org.springframework.util.StringUtils;
22 19  
23 20 import java.math.BigInteger;
24 21 import java.security.SecureRandom;
25   -import java.util.ArrayList;
26   -import java.util.List;
27 22 import java.util.Optional;
28 23  
29 24 /**
... ... @@ -105,7 +100,7 @@ public class CadastroUsuarioService {
105 100 usuario.setSenha(senha);
106 101 mailer.enviarNovaSenha(usuario);
107 102 }else {
108   - throw new RuntimeException("Usuário Cadastrado como Brasil Cidadão.");
  103 + throw new RuntimeException("Usuário Cadastrado com Login Único.");
109 104 }
110 105 }else{
111 106 throw new RuntimeException("Email não cadastrado.");
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/services/ConfiguracaoEmailService.java
... ... @@ -5,12 +5,8 @@
5 5 */
6 6 package br.gov.planejamento.dipla.protocolo.services;
7 7  
8   -import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
9 8 import br.gov.planejamento.dipla.protocolo.entities.ConfiguracaoEmail;
10   -import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;
11 9 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoEmailRepository;
12   -import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
13   -import br.gov.planejamento.dipla.protocolo.repositories.TiposDocumentoRepository;
14 10 import org.springframework.beans.factory.annotation.Autowired;
15 11 import org.springframework.stereotype.Service;
16 12 import org.springframework.transaction.annotation.Transactional;
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/services/ConfiguracaoService.java
... ... @@ -6,9 +6,7 @@
6 6 package br.gov.planejamento.dipla.protocolo.services;
7 7  
8 8 import br.gov.planejamento.dipla.protocolo.entities.Configuracao;
9   -import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;
10 9 import br.gov.planejamento.dipla.protocolo.repositories.ConfiguracaoRepository;
11   -import br.gov.planejamento.dipla.protocolo.repositories.TiposDocumentoRepository;
12 10 import org.springframework.beans.factory.annotation.Autowired;
13 11 import org.springframework.stereotype.Service;
14 12 import org.springframework.transaction.annotation.Transactional;
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/services/EnviarProtocoloService.java
1 1 package br.gov.planejamento.dipla.protocolo.services;
2 2  
  3 +import Sei.RetornoConsultaProcedimento;
3 4 import br.gov.planejamento.dipla.protocolo.dto.ArquivoDTO;
4 5 import br.gov.planejamento.dipla.protocolo.entities.AcaoEnum;
5 6 import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
... ... @@ -13,9 +14,6 @@ import org.springframework.beans.factory.annotation.Autowired;
13 14 import org.springframework.context.ApplicationEventPublisher;
14 15 import org.springframework.stereotype.Service;
15 16  
16   -import Sei.RetornoConsultaProcedimento;
17   -
18   -import java.time.LocalDateTime;
19 17 import java.util.Date;
20 18 import java.util.List;
21 19 import java.util.Optional;
... ... @@ -56,13 +54,13 @@ public class EnviarProtocoloService {
56 54 return Optional.of(retornoConsultaProcedimento.getLinkAcesso());
57 55 }
58 56  
59   - public void enviarSEI(Protocolo protocolo, String sei, String tipo) {
  57 + public void enviarSEI(Protocolo protocolo, String sei, String tipo, String idSei) {
60 58 protocolo.setDataEnvio(new Date());
61 59 protocolo.setNupe("Processando...");
62 60 protocolo.setStatus(StatusEnum.PROCESSANDO);
63 61 protocoloRepository.save(protocolo);
64 62 logProtocoloService.saveLog(protocolo,AcaoEnum.ALTERAR);
65   - publisher.publishEvent(new AprovarProtocoloEvent(this, protocolo, logProtocoloService.recuperarUsuario(), sei, tipo));
  63 + publisher.publishEvent(new AprovarProtocoloEvent(this, protocolo, logProtocoloService.recuperarUsuario(), sei, tipo, idSei));
66 64 }
67 65  
68 66 public void recusar(Protocolo protocolo) {
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/services/LogProtocoloService.java
1 1 package br.gov.planejamento.dipla.protocolo.services;
2 2  
3   -import java.util.Date;
4   -import java.util.List;
5   -import java.util.Optional;
6   -
7   -import javax.persistence.Column;
8   -import javax.persistence.EnumType;
9   -import javax.persistence.Enumerated;
10   -import javax.persistence.GeneratedValue;
11   -import javax.persistence.GenerationType;
12   -import javax.persistence.Id;
13   -import javax.persistence.JoinColumn;
14   -import javax.persistence.ManyToOne;
15   -import javax.persistence.Temporal;
16   -
  3 +import br.gov.planejamento.dipla.protocolo.entities.*;
  4 +import br.gov.planejamento.dipla.protocolo.repositories.LogStatusRepository;
  5 +import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;
17 6 import org.springframework.beans.factory.annotation.Autowired;
18 7 import org.springframework.security.core.context.SecurityContextHolder;
19 8 import org.springframework.stereotype.Service;
20 9 import org.springframework.transaction.annotation.Transactional;
21   -
22   -import br.gov.planejamento.dipla.protocolo.dto.ArquivoDTO;
23   -import br.gov.planejamento.dipla.protocolo.entities.AcaoEnum;
24   -import br.gov.planejamento.dipla.protocolo.entities.Arquivos;
25   -import br.gov.planejamento.dipla.protocolo.entities.EntidadeEnum;
26   -import br.gov.planejamento.dipla.protocolo.entities.LogSistema;
27   -import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
28   -import br.gov.planejamento.dipla.protocolo.entities.StatusEnum;
29   -import br.gov.planejamento.dipla.protocolo.entities.TiposDocumento;
30   -import br.gov.planejamento.dipla.protocolo.entities.Usuario;
31   -import br.gov.planejamento.dipla.protocolo.entities.UsuarioBrasilCidadao;
32   -import br.gov.planejamento.dipla.protocolo.repositories.LogStatusRepository;
33   -import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository;
34   -import br.gov.planejamento.dipla.protocolo.security.UsuarioSistema;
35   -import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorage;
36 10 /**
37 11 * Created by dario on 29/09/17.
38 12 */
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/services/ProtocoloFlagService.java
1 1 package br.gov.planejamento.dipla.protocolo.services;
2 2  
3   -import java.util.Optional;
4 3 import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
  4 +
  5 +import java.util.Optional;
5 6 /**
6 7 * Created by dario on 29/09/17.
7 8 */
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/services/event/AprovarProtocoloEvent.java
... ... @@ -11,12 +11,14 @@ public class AprovarProtocoloEvent extends ApplicationEvent {
11 11 private Long idUsuario;
12 12 private String sei;
13 13 private String tipo;
  14 + private String idSei;
14 15  
15   - public AprovarProtocoloEvent(Object source, Protocolo protocolo, Long idUsuario, String sei, String tipo) {
  16 + public AprovarProtocoloEvent(Object source, Protocolo protocolo, Long idUsuario, String sei, String tipo, String idSei) {
16 17 super(source);
17 18 this.protocolo = protocolo;
18 19 this.idUsuario = idUsuario;
19 20 this.sei = sei;
20 21 this.tipo = tipo;
  22 + this.idSei = idSei;
21 23 }
22 24 }
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/services/event/listener/AprovarProtocoloListener.java
... ... @@ -14,6 +14,10 @@ public class AprovarProtocoloListener implements ApplicationListener&lt;AprovarProt
14 14  
15 15 @Override
16 16 public void onApplicationEvent(AprovarProtocoloEvent aprovarProtocoloEvent) {
17   - seiWSClient.enviar(aprovarProtocoloEvent.getProtocolo(),aprovarProtocoloEvent.getIdUsuario(), aprovarProtocoloEvent.getSei(),aprovarProtocoloEvent.getTipo());
  17 + try {
  18 + seiWSClient.enviar(aprovarProtocoloEvent.getProtocolo(),aprovarProtocoloEvent.getIdUsuario(), aprovarProtocoloEvent.getSei(),aprovarProtocoloEvent.getTipo(), aprovarProtocoloEvent.getIdSei());
  19 + } catch (Exception e) {
  20 + e.printStackTrace();
  21 + }
18 22 }
19 23 }
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/services/impl/ProtocoloFlagServiceImpl.java
1 1 package br.gov.planejamento.dipla.protocolo.services.impl;
2 2  
3 3 import br.gov.planejamento.dipla.protocolo.entities.Protocolo;
4   -import br.gov.planejamento.dipla.protocolo.services.ProtocoloFlagService;
5 4 import br.gov.planejamento.dipla.protocolo.repositories.ProtocoloRepository;
  5 +import br.gov.planejamento.dipla.protocolo.services.ProtocoloFlagService;
6 6 import org.springframework.beans.factory.annotation.Autowired;
7 7 import org.springframework.stereotype.Service;
8   -import org.springframework.stereotype.Service;
9 8  
10 9 import java.util.Optional;
11 10  
... ...
src/main/java/br/gov/planejamento/dipla/protocolo/storage/local/ArquivoStorageLocal.java
1 1 package br.gov.planejamento.dipla.protocolo.storage.local;
2 2  
3   -import br.gov.planejamento.dipla.protocolo.clamav.ClamavUtil;
4 3 import br.gov.planejamento.dipla.protocolo.storage.ArquivoStorage;
5 4 import br.gov.planejamento.dipla.protocolo.util.MyStringUtil;
6 5 import org.apache.commons.io.FileUtils;
... ...
src/main/java/fi/solita/clamav/ClamAVClient.java
... ... @@ -3,12 +3,8 @@ package fi.solita.clamav;
3 3 /**
4 4 * Created by dario on 19/10/17.
5 5 */
6   -import java.io.BufferedOutputStream;
7   -import java.io.ByteArrayInputStream;
8   -import java.io.ByteArrayOutputStream;
9   -import java.io.IOException;
10   -import java.io.InputStream;
11   -import java.io.OutputStream;
  6 +
  7 +import java.io.*;
12 8 import java.net.Socket;
13 9 import java.nio.ByteBuffer;
14 10 import java.nio.charset.StandardCharsets;
... ...
src/main/resources/application.properties
  1 +#Banco de dados
  2 +
  3 +spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
  4 +spring.datasource.url= jdbc:mysql://10.209.40.206/protocolo-sei?useSSL=false
  5 +spring.datasource.username=root
  6 +spring.datasource.password=root
  7 +
  8 +#server.context-path=/protocolo
  9 +
1 10 spring.thymeleaf.mode=HTML
2 11 spring.thymeleaf.template-resolver-order=1
3 12  
4 13 #spring.mvc.locale=pt_BR
5 14 spring.mvc.date-format=dd/MM/yyyy HH:mm
6 15  
7   -spring.datasource.jndi-name=java:comp/env/jdbc/protocoloDB
  16 +#spring.datasource.jndi-name=java:comp/env/jdbc/protocoloDB
8 17  
9 18 spring.http.multipart.max-file-size=30720KB
10 19 spring.http.multipart.max-request-size=30720KB
... ... @@ -18,9 +27,10 @@ versao=@project.version@
18 27  
19 28  
20 29  
21   -
22   -
23 30 # Recaptcha
24 31 #recaptcha.url=https://www.google.com/recaptcha/api/siteverify
25 32 #recaptcha.site-key=!1vfdvS34#$%%$Cdd7581dec
26   -#recaptcha.secret-key=!1vfdvS34#$%%$Cdd7581dec
27 33 \ No newline at end of file
  34 +#recaptcha.secret-key=!1vfdvS34#$%%$Cdd7581dec
  35 +
  36 +# Comando para execu��o do flyway em ambiente de desenvolvimento
  37 +# mvn flyway:migrate -Dflyway.url=jdbc:mysql://localhost:3306/protocolo?useSSL=false -Dflyway.user=root -Dflyway.password=root -e -X
28 38 \ No newline at end of file
... ...
src/main/resources/db/migration/V01_Start.sql
... ... @@ -1,582 +0,0 @@
1   --- MySQL dump 10.13 Distrib 5.7.17, for Win64 (x86_64)
2   ---
3   --- Server version 5.7.21
4   -
5   -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
6   -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
7   -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
8   -/*!40101 SET NAMES utf8 */;
9   -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
10   -/*!40103 SET TIME_ZONE='+00:00' */;
11   -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
12   -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
13   -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
14   -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
15   -
16   ---
17   --- Table structure for table `arquivos`
18   ---
19   -
20   -DROP TABLE IF EXISTS `arquivos`;
21   -/*!40101 SET @saved_cs_client = @@character_set_client */;
22   -/*!40101 SET character_set_client = utf8 */;
23   -CREATE TABLE `arquivos` (
24   - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,
25   - `codigo_protocolo` bigint(20) DEFAULT NULL,
26   - `nome` varchar(200) NOT NULL,
27   - `nome_original` varchar(100) NOT NULL,
28   - `content_type` varchar(100) NOT NULL,
29   - `tamanho` varchar(10) NOT NULL,
30   - `codigo_tipo_documento` bigint(20) DEFAULT NULL,
31   - `descricao_documento` varchar(200) DEFAULT NULL,
32   - PRIMARY KEY (`codigo`),
33   - KEY `codigo_protocolo` (`codigo_protocolo`),
34   - KEY `codigo_tipo_documento` (`codigo_tipo_documento`),
35   - CONSTRAINT `arquivos_ibfk_1` FOREIGN KEY (`codigo_protocolo`) REFERENCES `protocolo` (`codigo`),
36   - CONSTRAINT `arquivos_ibfk_2` FOREIGN KEY (`codigo_tipo_documento`) REFERENCES `tipo_documento` (`codigo`)
37   -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
38   -/*!40101 SET character_set_client = @saved_cs_client */;
39   -
40   -
41   ---
42   --- Table structure for table `classificacao`
43   ---
44   -
45   -DROP TABLE IF EXISTS `classificacao`;
46   -/*!40101 SET @saved_cs_client = @@character_set_client */;
47   -/*!40101 SET character_set_client = utf8 */;
48   -CREATE TABLE `classificacao` (
49   - `codigo` bigint(20) NOT NULL,
50   - `nome` varchar(100) NOT NULL,
51   - PRIMARY KEY (`codigo`)
52   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
53   -/*!40101 SET character_set_client = @saved_cs_client */;
54   -
55   ---
56   --- Dumping data for table `classificacao`
57   ---
58   -
59   -LOCK TABLES `classificacao` WRITE;
60   -/*!40000 ALTER TABLE `classificacao` DISABLE KEYS */;
61   -INSERT INTO `classificacao` VALUES (1,'server-email'),(2,'sei'),(3,'storage'),(4,'brasil-cidadao'),(5,'captcha');
62   -/*!40000 ALTER TABLE `classificacao` ENABLE KEYS */;
63   -UNLOCK TABLES;
64   -
65   ---
66   --- Table structure for table `configuracao`
67   ---
68   -
69   -DROP TABLE IF EXISTS `configuracao`;
70   -/*!40101 SET @saved_cs_client = @@character_set_client */;
71   -/*!40101 SET character_set_client = utf8 */;
72   -CREATE TABLE `configuracao` (
73   - `codigo` bigint(20) NOT NULL,
74   - `nome` varchar(45) NOT NULL,
75   - `valor` text,
76   - `descricao` text,
77   - `codigo_classificacao` bigint(20) NOT NULL,
78   - PRIMARY KEY (`codigo`),
79   - KEY `fk_configuracao_classificacao_idx` (`codigo_classificacao`),
80   - CONSTRAINT `classificacao_fk` FOREIGN KEY (`codigo_classificacao`) REFERENCES `classificacao` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION
81   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
82   -/*!40101 SET character_set_client = @saved_cs_client */;
83   -
84   ---
85   --- Dumping data for table `configuracao`
86   ---
87   -
88   -LOCK TABLES `configuracao` WRITE;
89   -/*!40000 ALTER TABLE `configuracao` DISABLE KEYS */;
90   -INSERT INTO `configuracao` VALUES (1,'SMTP_SERVER','10.209.253.28','',1),(2,'SMTP_PORT','25','teste3',1),(3,'MAIL_FROM','xxx@yyy.zzz','',1),(4,'EMAIL_RESPONSAVEL','sss@sssf.com',NULL,1),(9,'URL_AUTORIZAR','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/authorize',NULL,4),(10,'URL_TOKEN','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/token',NULL,4),(11,'URL_DADOS_USUARIO','https://testeservicos-ecidadao.estaleiro.serpro.gov.br/servicos-ecidadao/ecidadao/usuario/getUserInfo/',NULL,4),(12,'CLIENT_ID','516a9b57-d022-4843-a792-93b4dc95622b',NULL,4),(13,'SCOPE','openid',NULL,4),(14,'REDIRECT_URI','https://protocolo.planejamento.gov.br/login',NULL,4),(15,'CLIENT_SECRET','Ld65DuKIva0_EU0LO1VrVC6Be7b-_AsgvkueKpW4OJlhDdJQ4TJ9nKB173M5c5mmG03uhZvEbBKnDRmAe7gZkw',NULL,4),(16,'ESCOPO','dados_brasil_cidadao',NULL,4),(18,'URL_BRASIL_CIDADAO','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/login',NULL,4),(19,'URL_PRIMEIRO_ACESSO','https://testeportal-ecidadao.estaleiro.serpro.gov.br/servicos-cidadao/acesso/#/primeiro-acesso',NULL,4),(20,'STORAGE_PATH','E:/Ambiente/Desenvolvimento/estorage/temp','teste2',3),(21,'URL_ENDPOINT','https://seitreina.nuvem.gov.br/sei/ws/SeiWS.php','teste4',2),(22,'ASSUNTO_CODIGO_ESTRUTURADO','520.1',NULL,2),(23,'PROCEDIMENTO_ESPECIFICADO','Especificacao do processo',NULL,2),(24,'PROCEDIMENTO_NIVEL_ACESSO','0',NULL,2),(25,'PROCEDIMENTO_ID_TIPO_PROCEDIMENTO','100000346',NULL,2),(26,'DOCUMENTO_TIPO','R',NULL,2),(27,'DOCUMENTO_ID_SERIE','1',NULL,2),(28,'DOCUMENTO_NIVEL_ACESSO','0',NULL,2),(29,'SIGLA_SISTEMA','UNB',NULL,2),(30,'IDENTIFICACAO_SERVICO','testeunb',NULL,2),(31,'ID_UNIDADE','110001972',NULL,2),(32,'CAPTCHA_SITE_KEY','6LdBAVQUAAAAAET4Dun738dTVCWfhqVDuvnDoBAp',NULL,5),(33,'CAPTCHA_SECRET_KEY','6LdBAVQUAAAAAEa3owvd2PBSaOwU8OOPeFwTq13w',NULL,5);
91   -/*!40000 ALTER TABLE `configuracao` ENABLE KEYS */;
92   -UNLOCK TABLES;
93   -
94   ---
95   --- Table structure for table `configuracao_email`
96   ---
97   -
98   -DROP TABLE IF EXISTS `configuracao_email`;
99   -/*!40101 SET @saved_cs_client = @@character_set_client */;
100   -/*!40101 SET character_set_client = utf8 */;
101   -CREATE TABLE `configuracao_email` (
102   - `codigo` int(11) NOT NULL,
103   - `nome` varchar(45) DEFAULT NULL,
104   - `valor` text,
105   - PRIMARY KEY (`codigo`)
106   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
107   -/*!40101 SET character_set_client = @saved_cs_client */;
108   -
109   ---
110   --- Dumping data for table `configuracao_email`
111   ---
112   -
113   -LOCK TABLES `configuracao_email` WRITE;
114   -/*!40000 ALTER TABLE `configuracao_email` DISABLE KEYS */;
115   -INSERT INTO `configuracao_email` VALUES (1,'EMAIL_CONTEUDO_CADASTRO','<p><span>PREZADO(A),</span></p>\r\n<p style=\"text-align: justify;\"><span><br />SEJA&nbsp;BEM&nbsp;VINDO&nbsp;AO&nbsp;SISTEMA&nbsp;DE PROTOCOLIZA&Ccedil;&Atilde;O&nbsp;ELETR&Ocirc;NICA&nbsp;DE&nbsp;DOCUMENTOS DO&nbsp;MINIST&Eacute;RIO&nbsp;DO&nbsp;PLANEJAMENTO, DESENVOLVIMENTO&nbsp;E&nbsp;GEST&Atilde;O.&nbsp;PARA&nbsp;CONCLUIR&nbsp;O SEU&nbsp;CADASTRO,&nbsp;ACESSE&nbsp;O&nbsp;LINK&nbsp;&nbsp;<span>{$METADADO_USUARIO_URLCONFIRMACAO}</span></span></p>\r\n<p><span><br />ESSE&nbsp;PASSO&nbsp;&Eacute;&nbsp;IMPORTANTE&nbsp;PARA&nbsp;VALIDARMOS TODOS&nbsp;OS&nbsp;USU&Aacute;RIOS.</span></p>'),(2,'EMAIL_CONTEUDO_CONSOLIDACAO','<p><span>PREZADO(A),</span></p>\r\n<p style=\"text-align: justify;\"><span><br />SEJA&nbsp;BEM&nbsp;VINDO&nbsp;AO&nbsp;SISTEMA&nbsp;DE PROTOCOLIZA&Ccedil;&Atilde;O&nbsp;ELETR&Ocirc;NICA&nbsp;DE&nbsp;DOCUMENTOS DO&nbsp;MINIST&Eacute;RIO&nbsp;DO&nbsp;PLANEJAMENTO, DESENVOLVIMENTO&nbsp;E&nbsp;GEST&Atilde;O.&nbsp;PARA&nbsp;CONCLUIR&nbsp;O SEU&nbsp;CADASTRO,&nbsp;ACESSE&nbsp;O&nbsp;LINK&nbsp;&nbsp;<span>{$METADADO_USUARIO_URLCONSILIACAO}</span></span></p>\r\n<p><span><br />ESSE&nbsp;PASSO&nbsp;&Eacute;&nbsp;IMPORTANTE&nbsp;PARA&nbsp;VALIDARMOS TODOS&nbsp;OS&nbsp;USU&Aacute;RIOS.</span></p>'),(3,'EMAIL_CONTEUDO_ERRO_SEI','<h1 style=\"font-size: 15px;\">Erro ao enviar o protocolo N&ordm;&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span>para o SEI</h1>\r\n<p>Detalhe do Erro:&nbsp;<span>{$METADADO_MSGERRO}</span>.</p>'),(4,'EMAIL_CONTEUDO_ESQUECI_SENHA','<p style=\"font-size: 15px;\">Recebemos uma solicita&ccedil;&atilde;o de recupera&ccedil;&atilde;o de senha, por isso estamos enviando uma nova para que voc&ecirc; possa continuar usando nosso sistema de protocolo.</p>\r\n<h1 style=\"font-size: 15px;\">Sua nova senha &eacute;:&nbsp;<span>{$METADADO_USUARIO_NOVASENHA}</span></h1>'),(5,'EMAIL_CONTEUDO_PROTOCOLO','<h3>N&uacute;mero do Protocolo Provis&oacute;rio:&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span></h3>\r\n<p style=\"text-align: justify;\">N&uacute;mero &Uacute;nico de Protocolo: Ser&aacute; enviado para o(s) e-mail(s) cadastrado(s) no prazo m&aacute;ximo de vinte e quatro horas, contadas do recebimento, salvo quando este ocorrer &agrave;s sextas-feiras, v&eacute;spera de feriados ou pontos facultativos ou haja restri&ccedil;&atilde;o t&eacute;cnica da unidade, devidamente fundamentada.</p>\r\n<p>Data:&nbsp;<span>{$METADADO_PROTOCOLO_DATAHORAFORMADATA}</span></p>\r\n<p>Nome:&nbsp;<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>\r\n<p>Refer&ecirc;ncia ao protocolo anterior:&nbsp;<span>{$METADADO_PROTOCOLO_NUMEROANTERIOR}</span></p>\r\n<p><span>{$METADADO_PROTOCOLO_TABELAARQUIVO}</span></p>'),(6,'EMAIL_CONTEUDO_NEGADO','<h3>N&uacute;mero do Protocolo Provis&oacute;rio:&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span></h3>\r\n<p style=\"text-align: justify;\">Prezado (a)<span>{$METADADO_PROTOCOLO_USUARIONOME}</span>, <br /> Esta &eacute; uma mensagem autom&aacute;tica e n&atilde;o deve ser respondida. <br /> Seu protocolo n&atilde;o foi aceito pelo motivo abaixo especificado: <br /><span>{$METADADO_PROTOCOLO_OBSERVACAO}</span></p>\r\n<p>Nome:<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>'),(7,'EMAIL_CONTEUDO_RECEBIMENTO_SEI','<h3>N&uacute;mero &Uacute;nico de Protocolo:<span>{$METADADO_PROTOCOLO_NUPE}</span></h3>\r\n<p style=\"text-align: justify;\">Prezado (a) usu&aacute;rio (a), Esta &eacute; uma mensagem autom&aacute;tica e n&atilde;o deve ser respondida. Informamos que seu protocolo foi entregue ao setor respons&aacute;vel e que foi gerado o NUP:<span>{$METADADO_PROTOCOLO_NUPE}</span>. Quaisquer diverg&ecirc;ncias das informa&ccedil;&otilde;es prestadas ou problemas nos arquivos anexados ser&atilde;o comunicados ao (&agrave;) senhor (a) atrav&eacute;s dos e-mails informados em seu cadastro. Informa&ccedil;&otilde;es referentes &agrave; tramita&ccedil;&atilde;o de seu processo ser&atilde;o atualizadas at&eacute; 24 horas e estar&atilde;o acess&iacute;veis no s&iacute;tio do protocolo integrado do Governo Federal, dispon&iacute;vel em&nbsp;<span>{$METADADO_PROTOCOLO_LINKSEI}</span></p>\r\n<p>Data:<span>{$METADADO_PROTOCOLO_DATAHORAFORMADATA}</span>}.</p>\r\n<p>Nome:<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>\r\n<p>Refer&ecirc;ncia ao protocolo anterior:</p>\r\n<p><span>{$METADADO_PROTOCOLO_TABELAARQUIVO}</span></p>'),(8,'EMAIL_CABECALHO','<h4 style=\"background-color: #fafafa; color: #626262; text-align: center;\"><span>{$METADADO_LOGO_EMAIL}</span></h4><h4 style=\"background-color: #fafafa; color: #626262; text-align: center;\">Minist&eacute;rio do Planejamento, Desenvolvimento e Gest&atilde;o&nbsp;<br />Protocolo Central&nbsp;<br />Esplanada dos Minist&eacute;rios Bloco K, T&eacute;rreo, sala T 28, CEP 70.040-906 &ndash; Bras&iacute;lia-DF&nbsp;<br />protocolo@planejamento.gov.br&nbsp;<br />(61) 2020-5195/5580&nbsp;</h4>'),(9,'EMAIL_RODAPE','<p>&nbsp;</p>\r <p>&ldquo;Por gentileza, responda nossa pesquisa de satisfa&ccedil;&atilde;o do Sistema de Protocolo Eletr&ocirc;nico. Sua contribui&ccedil;&atilde;o &eacute; de extrema valia.&nbsp;&nbsp;<a href=\"http://formsus.datasus.gov.br/site/formulario.php?id_aplicacao=36481\">Clique aqui</a>&rdquo;</p>\r <p>&nbsp;</p>\r <p style=\"text-align: justify; font-size: 10px;\">S&atilde;o de exclusiva responsabilidade do usu&aacute;rio: A conformidade entre os dados informados e os documentos; A conserva&ccedil;&atilde;o dos originais em papel de documentos digitalizados at&eacute; que decaia o direito de revis&atilde;o dos atos praticados no processo, para que, caso solicitado, sejam apresentados para qualquer tipo de confer&ecirc;ncia; A observa&ccedil;&atilde;o de que os atos processuais se consideram realizados no dia e hora do recebimento pelo SEI, considerando-se tempestivos os praticados at&eacute; 23h59min59s do &uacute;ltimo dia do prazo, considerando sempre o hor&aacute;rio oficial de Bras&iacute;lia, independente do fuso hor&aacute;rio em que se encontre. &nbsp;</p>'),(10,'EMAIL_CONTEUDO_DESBLOQUEIO','<p><span>PREZADO(A),</span></p>\r\n<p style=\"text-align: justify;\"><span><br />Usuário bloqueado, favor acessar o LINK <span>{$METADADO_USUARIO_URLDESBLOQUEIO}</span></span></p>\r\n<p><span><br />para desbloqueiar o usuário.</span></p>');
116   -/*!40000 ALTER TABLE `configuracao_email` ENABLE KEYS */;
117   -UNLOCK TABLES;
118   -
119   ---
120   --- Table structure for table `expedicao`
121   ---
122   -
123   -DROP TABLE IF EXISTS `expedicao`;
124   -/*!40101 SET @saved_cs_client = @@character_set_client */;
125   -/*!40101 SET character_set_client = utf8 */;
126   -CREATE TABLE `expedicao` (
127   - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,
128   - `numero_processo` varchar(100) NOT NULL,
129   - `data_expedicao` datetime NOT NULL,
130   - `usuario_codigo` bigint(20) NOT NULL,
131   - `status_expedicao` varchar(45) DEFAULT NULL,
132   - PRIMARY KEY (`codigo`),
133   - KEY `fk_expedicao_usuario1_idx` (`usuario_codigo`),
134   - CONSTRAINT `fk_expedicao_usuario1` FOREIGN KEY (`usuario_codigo`) REFERENCES `usuario` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION
135   -) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;
136   -/*!40101 SET character_set_client = @saved_cs_client */;
137   -
138   -
139   ---
140   --- Table structure for table `grupo`
141   ---
142   -
143   -DROP TABLE IF EXISTS `grupo`;
144   -/*!40101 SET @saved_cs_client = @@character_set_client */;
145   -/*!40101 SET character_set_client = utf8 */;
146   -CREATE TABLE `grupo` (
147   - `codigo` bigint(20) NOT NULL,
148   - `nome` varchar(50) NOT NULL,
149   - PRIMARY KEY (`codigo`)
150   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
151   -/*!40101 SET character_set_client = @saved_cs_client */;
152   -
153   ---
154   --- Dumping data for table `grupo`
155   ---
156   -
157   -LOCK TABLES `grupo` WRITE;
158   -/*!40000 ALTER TABLE `grupo` DISABLE KEYS */;
159   -INSERT INTO `grupo` VALUES (1,'Administrador'),(2,'Protocolo'),(3,'Brasil Cidadao'),(4,'Usuario Expedidor');
160   -/*!40000 ALTER TABLE `grupo` ENABLE KEYS */;
161   -UNLOCK TABLES;
162   -
163   ---
164   --- Table structure for table `grupo_permissao`
165   ---
166   -
167   -DROP TABLE IF EXISTS `grupo_permissao`;
168   -/*!40101 SET @saved_cs_client = @@character_set_client */;
169   -/*!40101 SET character_set_client = utf8 */;
170   -CREATE TABLE `grupo_permissao` (
171   - `codigo_grupo` bigint(20) NOT NULL,
172   - `codigo_permissao` bigint(20) NOT NULL,
173   - PRIMARY KEY (`codigo_grupo`,`codigo_permissao`),
174   - KEY `codigo_permissao` (`codigo_permissao`),
175   - CONSTRAINT `grupo_permissao_ibfk_1` FOREIGN KEY (`codigo_grupo`) REFERENCES `grupo` (`codigo`),
176   - CONSTRAINT `grupo_permissao_ibfk_2` FOREIGN KEY (`codigo_permissao`) REFERENCES `permissao` (`codigo`)
177   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
178   -/*!40101 SET character_set_client = @saved_cs_client */;
179   -
180   ---
181   --- Dumping data for table `grupo_permissao`
182   ---
183   -
184   -LOCK TABLES `grupo_permissao` WRITE;
185   -/*!40000 ALTER TABLE `grupo_permissao` DISABLE KEYS */;
186   -INSERT INTO `grupo_permissao` VALUES (1,1),(2,2),(3,3),(4,4);
187   -/*!40000 ALTER TABLE `grupo_permissao` ENABLE KEYS */;
188   -UNLOCK TABLES;
189   -
190   ---
191   --- Table structure for table `link_expedicao_sei`
192   ---
193   -
194   -DROP TABLE IF EXISTS `link_expedicao_sei`;
195   -/*!40101 SET @saved_cs_client = @@character_set_client */;
196   -/*!40101 SET character_set_client = utf8 */;
197   -CREATE TABLE `link_expedicao_sei` (
198   - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,
199   - `link` varchar(255) NOT NULL,
200   - `data` datetime NOT NULL,
201   - `status` varchar(10) NOT NULL,
202   - `usuario_codigo` bigint(20) NOT NULL,
203   - `expedicao_codigo` bigint(20) NOT NULL,
204   - PRIMARY KEY (`codigo`),
205   - KEY `fk_link_expedicao_sei_usuario1_idx` (`usuario_codigo`),
206   - KEY `fk_link_expedicao_sei_expedicao1_idx` (`expedicao_codigo`),
207   - CONSTRAINT `fk_link_expedicao_sei_expedicao1` FOREIGN KEY (`expedicao_codigo`) REFERENCES `expedicao` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION,
208   - CONSTRAINT `fk_link_expedicao_sei_usuario1` FOREIGN KEY (`usuario_codigo`) REFERENCES `usuario` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION
209   -) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8;
210   -/*!40101 SET character_set_client = @saved_cs_client */;
211   -
212   -
213   ---
214   --- Table structure for table `log_sistema`
215   ---
216   -
217   -DROP TABLE IF EXISTS `log_sistema`;
218   -/*!40101 SET @saved_cs_client = @@character_set_client */;
219   -/*!40101 SET character_set_client = utf8 */;
220   -CREATE TABLE `log_sistema` (
221   - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,
222   - `codigo_entidade` bigint(20) NOT NULL,
223   - `entidade` varchar(45) NOT NULL,
224   - `acao` varchar(45) NOT NULL,
225   - `antes` text,
226   - `depois` text,
227   - `data_hora` datetime NOT NULL,
228   - `codigo_usuario` bigint(20) DEFAULT NULL,
229   - PRIMARY KEY (`codigo`)
230   -) ENGINE=InnoDB AUTO_INCREMENT=202 DEFAULT CHARSET=utf8;
231   -/*!40101 SET character_set_client = @saved_cs_client */;
232   -
233   -
234   ---
235   --- Table structure for table `login_attempt`
236   ---
237   -
238   -DROP TABLE IF EXISTS `login_attempt`;
239   -/*!40101 SET @saved_cs_client = @@character_set_client */;
240   -/*!40101 SET character_set_client = utf8 */;
241   -CREATE TABLE `login_attempt` (
242   - `id` int(11) NOT NULL AUTO_INCREMENT,
243   - `key` varchar(255) NOT NULL,
244   - `amount` int(2) NOT NULL DEFAULT '1',
245   - `reset_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
246   - `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
247   - `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
248   - PRIMARY KEY (`id`),
249   - KEY `amount` (`amount`),
250   - KEY `reset_at` (`reset_at`),
251   - KEY `key` (`key`) USING BTREE
252   -) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=latin1;
253   -/*!40101 SET character_set_client = @saved_cs_client */;
254   -
255   -
256   ---
257   --- Table structure for table `metadado`
258   ---
259   -
260   -DROP TABLE IF EXISTS `metadado`;
261   -/*!40101 SET @saved_cs_client = @@character_set_client */;
262   -/*!40101 SET character_set_client = utf8 */;
263   -CREATE TABLE `metadado` (
264   - `codigo` int(11) NOT NULL,
265   - `nome` varchar(45) NOT NULL,
266   - `valor` text,
267   - `descricao` text,
268   - PRIMARY KEY (`codigo`)
269   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
270   -/*!40101 SET character_set_client = @saved_cs_client */;
271   -
272   ---
273   --- Dumping data for table `metadado`
274   ---
275   -
276   -LOCK TABLES `metadado` WRITE;
277   -/*!40000 ALTER TABLE `metadado` DISABLE KEYS */;
278   -INSERT INTO `metadado` VALUES (1,'METADADO_LOGO_EMAIL','<img src=\"../../static/images/brasao-brasil.png\" th:src=\"|cid:logo|\"/>','Imagem do logótipo do ministério.'),(2,'METADADO_MSGERRO','<span th:text=\"${msgErro}\">Erro no protocolo.</span>','Mensagem de erro ao enviar ao SEI.'),(3,'METADADO_PROTOCOLO_DATAHORAFORMADATA','<span th:text=\"${protocolo.dataHoraFormatada}\">','Data de criação do protocolo.'),(4,'METADADO_PROTOCOLO_EMAIL1','<span th:text=\"${protocolo.email1}\">E-mail: protocolo.email1</span>','E-mail 1 de interessado.'),(5,'METADADO_PROTOCOLO_EMAIL2','<span th:text=\"${protocolo.email2}\">E-mail: protocolo.emails</span>','E-mail 2 de interessado.'),(6,'METADADO_PROTOCOLO_LINKSEI','<a th:href=\"|https://protocolointegrado.gov.br/protocolo/documento/detalhes_documento.jsf?protocolo=${protocolo.nupe}|\">Link protocolo integrado.</a>','Link de acesso ao protocolo no SEI.'),(7,'METADADO_PROTOCOLO_NUMERO','<span th:text=\"${protocolo.numero}\">Nmero do Protocolo Provisrio: 123ads31232asfd</span>','Numero do protocolo.'),(8,'METADADO_PROTOCOLO_NUMEROANTERIOR','<span th:text=\"${protocolo.numeroProtocoloAnterior}\">Referncia ao protocolo anterior: 121345461</span>','Numero de protocolo anterior.'),(9,'METADADO_PROTOCOLO_NUPE','<span th:text=\"${protocolo.nupe}\">protocolo.nupe</span>','Numero único do protocolo no SEI.'),(10,'METADADO_PROTOCOLO_OBSERVACAO','<span th:text=\"${protocolo.observacao}\">observacao</span>','Obsersavação cadastrada no cancelamento do protocolo.'),(11,'METADADO_PROTOCOLO_TABELAARQUIVO','<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\" style=\"width: 100%\">\n <thead>\n <tr>\n <td style=\"text-align: center\">\n Descrição do documento\n </td>\n <td style=\"text-align: center\">\n Arquivo\n </td>\n </tr>\n </thead>\n <tbody>\n <tr th:each=\"arquivo: ${protocolo.arquivosList}\">\n <td th:text=\"${arquivo.tipoDocumento.descricao}\">${arquivo.tipoDocumento.descricao}</td>\n <td th:text=\"${arquivo.nomeOriginal}\">${arquivo.nomeOriginal}</td>\n </tr>\n </tbody>\n</table>','Tabela com a lista de arquivos do protocolo.'),(12,'METADADO_PROTOCOLO_USUARIOEMAIL','<span th:text=\"${protocolo.usuario.email}\">E-mail: protocolo.email1</span>','E-mail do usuário que cadastrou o protocolo.'),(13,'METADADO_PROTOCOLO_USUARIONOME','<span th:text=\"${protocolo.usuario.nome}\">$ usuario nome</span>','Nome do usuário que cadastrou o protocolo.'),(14,'METADADO_USUARIO_NOVASENHA','<span th:text=\"${usuario.senha}\">Sua nova senha : 5as4f56as4f5as4</span>','Nova senha gerada para o usuário.'),(15,'METADADO_USUARIO_URLCONFIRMACAO','<a th:href=\"${usuario.urlConfirmacaoCadastro}\">CONFIRMAR MEU CADASTRO.</a>','Url para ativação do usuário.'),(16,'METADADO_USUARIO_URLCONSILIACAO','<a th:href=\"${usuario.urlConfirmacaoCadastro}\">CONFIRMAR MEU CADASTRO.</a>','Url para consiliação de usuário protocolo com usuário brasil cidadão.'),(17,'METADADO_USUARIO_URLDESBLOQUEIO','<a th:href=\"${usuario.urlDesbloqueio}\">Link de desbloqueio</a>',NULL);
279   -/*!40000 ALTER TABLE `metadado` ENABLE KEYS */;
280   -UNLOCK TABLES;
281   -
282   ---
283   --- Table structure for table `metadado_email`
284   ---
285   -
286   -DROP TABLE IF EXISTS `metadado_email`;
287   -/*!40101 SET @saved_cs_client = @@character_set_client */;
288   -/*!40101 SET character_set_client = utf8 */;
289   -CREATE TABLE `metadado_email` (
290   - `codigo_email` int(11) NOT NULL,
291   - `codigo_metadado` int(11) NOT NULL,
292   - PRIMARY KEY (`codigo_metadado`,`codigo_email`),
293   - KEY `fk_metadado_email_configuracao_email1_idx` (`codigo_email`),
294   - CONSTRAINT `metadado_email_fk1` FOREIGN KEY (`codigo_email`) REFERENCES `configuracao_email` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION,
295   - CONSTRAINT `metadado_email_fk2` FOREIGN KEY (`codigo_metadado`) REFERENCES `metadado` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION
296   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
297   -/*!40101 SET character_set_client = @saved_cs_client */;
298   -
299   ---
300   --- Dumping data for table `metadado_email`
301   ---
302   -
303   -LOCK TABLES `metadado_email` WRITE;
304   -/*!40000 ALTER TABLE `metadado_email` DISABLE KEYS */;
305   -INSERT INTO `metadado_email` VALUES (1,15),(2,16),(3,2),(3,7),(4,14),(5,3),(5,4),(5,5),(5,7),(5,8),(5,10),(5,11),(5,12),(5,13),(6,3),(6,4),(6,5),(6,7),(6,10),(6,12),(6,13),(7,3),(7,4),(7,5),(7,6),(7,7),(7,8),(7,9),(7,10),(7,11),(7,12),(7,13),(8,1),(9,1),(10,17);
306   -/*!40000 ALTER TABLE `metadado_email` ENABLE KEYS */;
307   -UNLOCK TABLES;
308   -
309   ---
310   --- Table structure for table `permissao`
311   ---
312   -
313   -DROP TABLE IF EXISTS `permissao`;
314   -/*!40101 SET @saved_cs_client = @@character_set_client */;
315   -/*!40101 SET character_set_client = utf8 */;
316   -CREATE TABLE `permissao` (
317   - `codigo` bigint(20) NOT NULL,
318   - `nome` varchar(50) NOT NULL,
319   - PRIMARY KEY (`codigo`)
320   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
321   -/*!40101 SET character_set_client = @saved_cs_client */;
322   -
323   ---
324   --- Dumping data for table `permissao`
325   ---
326   -
327   -LOCK TABLES `permissao` WRITE;
328   -/*!40000 ALTER TABLE `permissao` DISABLE KEYS */;
329   -INSERT INTO `permissao` VALUES (1,'ROLE_CADASTRO'),(2,'ROLE_PROTOCOLO'),(3,'ROLE_BRASILCIDADAO'),(4,'ROLE_EXPEDIDOR');
330   -/*!40000 ALTER TABLE `permissao` ENABLE KEYS */;
331   -UNLOCK TABLES;
332   -
333   ---
334   --- Table structure for table `protocolo`
335   ---
336   -
337   -DROP TABLE IF EXISTS `protocolo`;
338   -/*!40101 SET @saved_cs_client = @@character_set_client */;
339   -/*!40101 SET character_set_client = utf8 */;
340   -CREATE TABLE `protocolo` (
341   - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,
342   - `numero` varchar(50) NOT NULL,
343   - `data_hora` datetime DEFAULT NULL,
344   - `codigo_usuario` bigint(20) NOT NULL,
345   - `status` varchar(20) NOT NULL DEFAULT 'PENDENTE',
346   - `email1` varchar(50) DEFAULT NULL,
347   - `email2` varchar(50) DEFAULT NULL,
348   - `observacao` text,
349   - `nupe` varchar(20) DEFAULT NULL,
350   - `data_envio` datetime DEFAULT NULL,
351   - `erro_ws` text,
352   - `nr_protocolo_anterior` varchar(50) DEFAULT NULL,
353   - `id_unidade` bigint(20) DEFAULT NULL,
354   - `linksei` varchar(255) DEFAULT NULL,
355   - PRIMARY KEY (`codigo`),
356   - KEY `codigo_usuario` (`codigo_usuario`),
357   - CONSTRAINT `protocolo_ibfk_1` FOREIGN KEY (`codigo_usuario`) REFERENCES `usuario` (`codigo`)
358   -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
359   -/*!40101 SET character_set_client = @saved_cs_client */;
360   -
361   -
362   ---
363   --- Table structure for table `schema_version`
364   ---
365   -
366   -DROP TABLE IF EXISTS `schema_version`;
367   -/*!40101 SET @saved_cs_client = @@character_set_client */;
368   -/*!40101 SET character_set_client = utf8 */;
369   -CREATE TABLE `schema_version` (
370   - `installed_rank` int(11) NOT NULL,
371   - `version` varchar(50) DEFAULT NULL,
372   - `description` varchar(200) NOT NULL,
373   - `type` varchar(20) NOT NULL,
374   - `script` varchar(1000) NOT NULL,
375   - `checksum` int(11) DEFAULT NULL,
376   - `installed_by` varchar(100) NOT NULL,
377   - `installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
378   - `execution_time` int(11) NOT NULL,
379   - `success` tinyint(1) NOT NULL,
380   - PRIMARY KEY (`installed_rank`),
381   - KEY `schema_version_s_idx` (`success`)
382   -) ENGINE=InnoDB DEFAULT CHARSET=latin1;
383   -/*!40101 SET character_set_client = @saved_cs_client */;
384   -
385   ---
386   --- Dumping data for table `schema_version`
387   ---
388   -
389   -LOCK TABLES `schema_version` WRITE;
390   -/*!40000 ALTER TABLE `schema_version` DISABLE KEYS */;
391   -INSERT INTO `schema_version` VALUES (1,'01','Script inicial','SQL','V01__Start.sql',107793004,'root','2018-10-26 14:48:18',1610,1);
392   -/*!40000 ALTER TABLE `schema_version` ENABLE KEYS */;
393   -UNLOCK TABLES;
394   -
395   ---
396   --- Table structure for table `temp_arquivo`
397   ---
398   -
399   -DROP TABLE IF EXISTS `temp_arquivo`;
400   -/*!40101 SET @saved_cs_client = @@character_set_client */;
401   -/*!40101 SET character_set_client = utf8 */;
402   -CREATE TABLE `temp_arquivo` (
403   - `id` int(11) NOT NULL AUTO_INCREMENT,
404   - `nome` varchar(255) CHARACTER SET latin1 NOT NULL,
405   - `pagina` varchar(10) CHARACTER SET latin1 NOT NULL,
406   - `temp_desc_arquivo_idarquivo` varchar(2) CHARACTER SET latin1 NOT NULL,
407   - `temp_desc_arquivo_token` varchar(6) CHARACTER SET latin1 NOT NULL,
408   - PRIMARY KEY (`id`),
409   - KEY `fk_temp_arquivo_temp_desc_arquivo1_idx` (`temp_desc_arquivo_idarquivo`,`temp_desc_arquivo_token`),
410   - CONSTRAINT `fk_temp_arquivo_temp_desc_arquivo1` FOREIGN KEY (`temp_desc_arquivo_idarquivo`, `temp_desc_arquivo_token`) REFERENCES `temp_desc_arquivo` (`idarquivo`, `token`) ON DELETE NO ACTION ON UPDATE NO ACTION
411   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
412   -/*!40101 SET character_set_client = @saved_cs_client */;
413   -
414   -
415   ---
416   --- Table structure for table `temp_desc_arquivo`
417   ---
418   -
419   -DROP TABLE IF EXISTS `temp_desc_arquivo`;
420   -/*!40101 SET @saved_cs_client = @@character_set_client */;
421   -/*!40101 SET character_set_client = utf8 */;
422   -CREATE TABLE `temp_desc_arquivo` (
423   - `tipo` varchar(45) CHARACTER SET latin1 NOT NULL,
424   - `qtd_paginas` varchar(10) CHARACTER SET latin1 NOT NULL,
425   - `temp_protocolo_token` varchar(6) CHARACTER SET latin1 NOT NULL,
426   - `idarquivo` varchar(2) CHARACTER SET latin1 NOT NULL,
427   - `token` varchar(6) CHARACTER SET latin1 NOT NULL,
428   - `descricao` varchar(45) CHARACTER SET latin1 NOT NULL,
429   - PRIMARY KEY (`idarquivo`,`token`),
430   - KEY `fk_temp_desc_arquivo_temp_protocolo1_idx` (`temp_protocolo_token`),
431   - CONSTRAINT `fk_temp_desc_arquivo_temp_protocolo1` FOREIGN KEY (`temp_protocolo_token`) REFERENCES `temp_protocolo` (`token`) ON DELETE NO ACTION ON UPDATE NO ACTION
432   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
433   -/*!40101 SET character_set_client = @saved_cs_client */;
434   -
435   -
436   ---
437   --- Table structure for table `temp_protocolo`
438   ---
439   -
440   -DROP TABLE IF EXISTS `temp_protocolo`;
441   -/*!40101 SET @saved_cs_client = @@character_set_client */;
442   -/*!40101 SET character_set_client = utf8 */;
443   -CREATE TABLE `temp_protocolo` (
444   - `token` varchar(6) CHARACTER SET latin1 NOT NULL,
445   - `email1` varchar(100) CHARACTER SET latin1 DEFAULT NULL,
446   - `email2` varchar(100) CHARACTER SET big5 DEFAULT NULL,
447   - `nr_protocolo_anterior` varchar(100) CHARACTER SET latin1 DEFAULT NULL,
448   - `usuario_codigo` bigint(20) NOT NULL,
449   - PRIMARY KEY (`token`),
450   - KEY `fk_temp_protocolo_usuario1_idx` (`usuario_codigo`),
451   - CONSTRAINT `fk_temp_protocolo_usuario1` FOREIGN KEY (`usuario_codigo`) REFERENCES `usuario` (`codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION
452   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
453   -/*!40101 SET character_set_client = @saved_cs_client */;
454   -
455   -
456   ---
457   --- Table structure for table `tipo_documento`
458   ---
459   -
460   -DROP TABLE IF EXISTS `tipo_documento`;
461   -/*!40101 SET @saved_cs_client = @@character_set_client */;
462   -/*!40101 SET character_set_client = utf8 */;
463   -CREATE TABLE `tipo_documento` (
464   - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,
465   - `descricao` varchar(50) NOT NULL,
466   - `codigo_sei` varchar(45) NOT NULL,
467   - `ativo` tinyint(4) NOT NULL,
468   - PRIMARY KEY (`codigo`)
469   -) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
470   -/*!40101 SET character_set_client = @saved_cs_client */;
471   -
472   ---
473   --- Dumping data for table `tipo_documento`
474   ---
475   -
476   -LOCK TABLES `tipo_documento` WRITE;
477   -/*!40000 ALTER TABLE `tipo_documento` DISABLE KEYS */;
478   -INSERT INTO `tipo_documento` VALUES (14,'Requerimento','238',1),(15,'Complemento','651',1);
479   -/*!40000 ALTER TABLE `tipo_documento` ENABLE KEYS */;
480   -UNLOCK TABLES;
481   -
482   ---
483   --- Table structure for table `usuario`
484   ---
485   -
486   -DROP TABLE IF EXISTS `usuario`;
487   -/*!40101 SET @saved_cs_client = @@character_set_client */;
488   -/*!40101 SET character_set_client = utf8 */;
489   -CREATE TABLE `usuario` (
490   - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,
491   - `nome` varchar(50) NOT NULL,
492   - `email` varchar(50) NOT NULL,
493   - `senha` varchar(120) NOT NULL,
494   - `telefone` varchar(15) DEFAULT NULL,
495   - `ativo` tinyint(1) DEFAULT '1',
496   - `token` varchar(255) NOT NULL DEFAULT '0',
497   - `nome_social` varchar(50) DEFAULT NULL,
498   - `status_expedicao` tinyint(1) DEFAULT '0',
499   - `listexpedidor` varchar(30) DEFAULT NULL,
500   - `unidade` varchar(12) DEFAULT NULL,
501   - PRIMARY KEY (`codigo`),
502   - UNIQUE KEY `email` (`email`)
503   -) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
504   -/*!40101 SET character_set_client = @saved_cs_client */;
505   -
506   ---
507   --- Dumping data for table `usuario`
508   ---
509   -
510   -LOCK TABLES `usuario` WRITE;
511   -/*!40000 ALTER TABLE `usuario` DISABLE KEYS */;
512   -INSERT INTO `usuario` VALUES (1,'Admin','admin@admin.com','$2a$10$g.wT4R0Wnfel1jc/k84OXuwZE02BlACSLfWy6TycGPvvEKvIm86SG',NULL,1,'0',NULL,0,'LISTA1',NULL),(2,'Dário','dario.santos.bsb@gmail.com','$2a$10$kGXHZvmTfzS3.uAn7L5q1e6LXrQAhA29qFG0/d4jIUA684i8EJtNC','(99) 99999-9999',0,'0','',0,'selecionadosUsuarioExpedicao',NULL),(6,'FABIO HENRIQUE MAXIMIANO','dario.santos@redes.unb.br','$2a$10$Wv4zAd2QnmS.sFtvQf2xFuJZBCqkfyKeqI8lw3yEht/E6IUN9WgBm','(00)00000-0000',1,'0',NULL,1,'selecionadosUsuarioExpedicao',NULL),(7,'EXPEDIDOR','dariobsb@hotmail.com','$2a$10$K27B2DRGIjZAZxNXWzhkc./JFAQM98LJtzZbbGLm5Y6H0eSCDZTLO','(61) 99999-9999',1,'0','EXPED',0,'0',NULL),(8,'EXP@EXP.COM','exp@exp.com','$2a$10$sXtxt6ZrHbh8048pAppe8ubWUMJosr7wBVYsnMaIcpPAXM6SMT/1W','(11) 11111-1111',1,'0','EXP@EXP.COM',NULL,NULL,'110001972'),(9,'JOSE','jose@jose.com','$2a$10$BqBmIANciq4iZrPzJSXq8uTk5i/jZ8V0eFLetVUZohrLXEaRrznYi','(11) 2255-3366',1,'0','',NULL,NULL,'110001896');
513   -/*!40000 ALTER TABLE `usuario` ENABLE KEYS */;
514   -UNLOCK TABLES;
515   -
516   ---
517   --- Table structure for table `usuario_brasil_cidadao`
518   ---
519   -
520   -DROP TABLE IF EXISTS `usuario_brasil_cidadao`;
521   -/*!40101 SET @saved_cs_client = @@character_set_client */;
522   -/*!40101 SET character_set_client = utf8 */;
523   -CREATE TABLE `usuario_brasil_cidadao` (
524   - `codigo` bigint(20) NOT NULL AUTO_INCREMENT,
525   - `cpf` varchar(15) NOT NULL,
526   - `codigo_usuario` bigint(20) NOT NULL,
527   - `token` text,
528   - `ativo` tinyint(4) NOT NULL,
529   - `email` varchar(50) DEFAULT NULL,
530   - PRIMARY KEY (`codigo`),
531   - KEY `usuario_brasil_cidadao_fki_1` (`codigo_usuario`),
532   - CONSTRAINT `usuario_brasil_cidadao_ibfk_1` FOREIGN KEY (`codigo_usuario`) REFERENCES `usuario` (`codigo`) ON UPDATE CASCADE
533   -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
534   -/*!40101 SET character_set_client = @saved_cs_client */;
535   -
536   ---
537   --- Dumping data for table `usuario_brasil_cidadao`
538   ---
539   -
540   -LOCK TABLES `usuario_brasil_cidadao` WRITE;
541   -/*!40000 ALTER TABLE `usuario_brasil_cidadao` DISABLE KEYS */;
542   -INSERT INTO `usuario_brasil_cidadao` VALUES (1,'29752304869',6,'eyJraWQiOiJyc2ExIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIyOTc1MjMwNDg2OSIsImF6cCI6IjUxNmE5YjU3LWQwMjItNDg0My1hNzkyLTkzYjRkYzk1NjIyYiIsInNjb3BlIjpbImRhZG9zX2JyYXNpbF9jaWRhZGFvIiwib3BlbmlkIl0sIm5hbWUiOiJGQUJJTyBIRU5SSVFVRSBNQVhJTUlBTk8iLCJpc3MiOiJodHRwczpcL1wvdGVzdGVzY3AtZWNpZGFkYW8uZXN0YWxlaXJvLnNlcnByby5nb3YuYnJcL3NjcFwvIiwiZXhwIjoxNTQwNTg0NDY1LCJpYXQiOjE1NDA1ODA4NjYsImF1dGhfZmFjdG9yIjoiQ1BGX1NFTkhBIiwianRpIjoiZjM2MjQ0N2YtMjQxYi00MGJkLWFiNjEtMTQ5ODc3NjJjYWZmIn0.Ra8uMYFaxwXKhy3YG2Lu6HEC61hNVRW5bH2adk3oP3VgyC2wySvviXqz_Jd805Thl86SCVtWhr2csXWllBn0_gELW6BVAawePP7izaUef1Oohby9e7yluugMglvfqxQ8cRX0CZnprEflrS_SuWkvbW_ULxQ7clfSdJVkK0nkho9xgoQT133F-sCjjfPvg44jLqeNjbnVkRTtZwWBK14_pkDq90QLmZKryFwIstHuiVb-vTMdSMIbo4w3ppoT8UZaD8EXVoi_pAN8pXc8RLLi3gvGqxBvw71Zm18uJhf_bVkvlhClfwO-qK6oCxRTHMkBiFfUjpcLLuNS-GuSHS3AwQ',1,NULL);
543   -/*!40000 ALTER TABLE `usuario_brasil_cidadao` ENABLE KEYS */;
544   -UNLOCK TABLES;
545   -
546   ---
547   --- Table structure for table `usuario_grupo`
548   ---
549   -
550   -DROP TABLE IF EXISTS `usuario_grupo`;
551   -/*!40101 SET @saved_cs_client = @@character_set_client */;
552   -/*!40101 SET character_set_client = utf8 */;
553   -CREATE TABLE `usuario_grupo` (
554   - `codigo_usuario` bigint(20) NOT NULL,
555   - `codigo_grupo` bigint(20) NOT NULL,
556   - PRIMARY KEY (`codigo_usuario`,`codigo_grupo`),
557   - KEY `codigo_grupo` (`codigo_grupo`),
558   - CONSTRAINT `usuario_grupo_ibfk_1` FOREIGN KEY (`codigo_usuario`) REFERENCES `usuario` (`codigo`)
559   -) ENGINE=InnoDB DEFAULT CHARSET=utf8;
560   -/*!40101 SET character_set_client = @saved_cs_client */;
561   -
562   ---
563   --- Dumping data for table `usuario_grupo`
564   ---
565   -
566   -LOCK TABLES `usuario_grupo` WRITE;
567   -/*!40000 ALTER TABLE `usuario_grupo` DISABLE KEYS */;
568   -INSERT INTO `usuario_grupo` VALUES (1,1),(2,2),(6,3),(7,4),(8,4),(9,4);
569   -/*!40000 ALTER TABLE `usuario_grupo` ENABLE KEYS */;
570   -UNLOCK TABLES;
571   -
572   -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
573   -
574   -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
575   -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
576   -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
577   -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
578   -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
579   -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
580   -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
581   -
582   --- Dump completed on 2018-11-19 13:32:46
src/main/resources/db/migration/V01__criar_tabela_usuario_grupo_permissao.sql 0 → 100644
... ... @@ -0,0 +1,42 @@
  1 +CREATE TABLE usuario (
  2 + codigo BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
  3 + nome VARCHAR(50) NOT NULL,
  4 + email VARCHAR(50) NOT NULL,
  5 + senha VARCHAR(120) NOT NULL,
  6 + ativo BOOLEAN DEFAULT true,
  7 + data_nascimento DATE
  8 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  9 +
  10 +CREATE TABLE grupo (
  11 + codigo BIGINT(20) PRIMARY KEY,
  12 + nome VARCHAR(50) NOT NULL
  13 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  14 +
  15 +CREATE TABLE permissao (
  16 + codigo BIGINT(20) PRIMARY KEY,
  17 + nome VARCHAR(50) NOT NULL
  18 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  19 +
  20 +CREATE TABLE usuario_grupo (
  21 + codigo_usuario BIGINT(20) NOT NULL,
  22 + codigo_grupo BIGINT(20) NOT NULL,
  23 + PRIMARY KEY (codigo_usuario, codigo_grupo),
  24 + FOREIGN KEY (codigo_usuario) REFERENCES usuario(codigo),
  25 + FOREIGN KEY (codigo_grupo) REFERENCES grupo(codigo)
  26 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  27 +
  28 +CREATE TABLE grupo_permissao (
  29 + codigo_grupo BIGINT(20) NOT NULL,
  30 + codigo_permissao BIGINT(20) NOT NULL,
  31 + PRIMARY KEY (codigo_grupo, codigo_permissao),
  32 + FOREIGN KEY (codigo_grupo) REFERENCES grupo(codigo),
  33 + FOREIGN KEY (codigo_permissao) REFERENCES permissao(codigo)
  34 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  35 +
  36 +ALTER TABLE usuario
  37 + MODIFY ativo BOOLEAN DEFAULT true NOT NULL;
  38 +
  39 +INSERT INTO grupo (codigo, nome) VALUES (1, 'Administrador');
  40 +INSERT INTO grupo (codigo, nome) VALUES (2, 'Consulta');
  41 +
  42 +INSERT INTO usuario (nome, email, senha, ativo) VALUES ('Admin', 'admin@admin.com', '$2a$10$g.wT4R0Wnfel1jc/k84OXuwZE02BlACSLfWy6TycGPvvEKvIm86SG', 1)
0 43 \ No newline at end of file
... ...
src/main/resources/db/migration/V02__inserir_permissoes_e_relacionar_usuario_admin.sql 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +INSERT INTO permissao VALUES (1, 'ROLE_CADASTRO');
  2 +
  3 +INSERT INTO grupo_permissao (codigo_grupo, codigo_permissao) VALUES (1, 1);
  4 +
  5 +INSERT INTO usuario_grupo (codigo_usuario, codigo_grupo) VALUES (
  6 + (SELECT codigo FROM usuario WHERE email = 'admin@admin.com'), 1);
0 7 \ No newline at end of file
... ...
src/main/resources/db/migration/V03__criar_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +CREATE TABLE protocolo (
  2 + codigo BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
  3 + nome VARCHAR(80) NOT NULL,
  4 + rg VARCHAR(20) NOT NULL,
  5 + cpf VARCHAR(11) NOT NULL,
  6 + telefone VARCHAR(20) NOT NULL,
  7 + email VARCHAR(50) NOT NULL,
  8 + descricao VARCHAR(120) NOT NULL,
  9 + numero VARCHAR(50) NOT NULL,
  10 + arquivo VARCHAR(100) NOT NULL,
  11 + content_type VARCHAR(100) NOT NULL,
  12 + data_hora DATETIME
  13 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
0 14 \ No newline at end of file
... ...
src/main/resources/db/migration/V04__criar_tabela_arquivos.sql 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +ALTER TABLE protocolo DROP COLUMN arquivo;
  2 +ALTER TABLE protocolo DROP COLUMN content_type;
  3 +
  4 +CREATE TABLE arquivos (
  5 + codigo BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
  6 + codigo_protocolo BIGINT(20),
  7 + nome VARCHAR(100) NOT NULL,
  8 + nome_original VARCHAR(100) NOT NULL,
  9 + content_type VARCHAR(100) NOT NULL,
  10 + tamanho VARCHAR(10) NOT NULL,
  11 + FOREIGN KEY (codigo_protocolo) REFERENCES protocolo(codigo)
  12 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
0 13 \ No newline at end of file
... ...
src/main/resources/db/migration/V05__inserir_role_protocolo.sql 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +INSERT INTO permissao VALUES (2, 'ROLE_PROTOCOLO');
  2 +
  3 +INSERT INTO grupo_permissao (codigo_grupo, codigo_permissao) VALUES (2, 2);
... ...
src/main/resources/db/migration/V06__remover_coluna_dt_nascimento_e_ativo_tabela_usuario.sql 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +ALTER TABLE usuario DROP COLUMN data_nascimento;
  2 +ALTER TABLE usuario DROP COLUMN ativo;
... ...
src/main/resources/db/migration/V07__adicao_colula_telefone_tabela_usuario.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE usuario ADD COLUMN telefone VARCHAR(15);
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V08__remover_colunas_nome_rg_cpf_telefone_email_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +ALTER TABLE protocolo DROP COLUMN nome;
  2 +ALTER TABLE protocolo DROP COLUMN rg;
  3 +ALTER TABLE protocolo DROP COLUMN cpf;
  4 +ALTER TABLE protocolo DROP COLUMN telefone;
  5 +ALTER TABLE protocolo DROP COLUMN email;
... ...
src/main/resources/db/migration/V09__adicionar_coluna_codigo_usuario_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +ALTER TABLE protocolo ADD COLUMN codigo_usuario BIGINT(20);
  2 +
  3 +ALTER TABLE protocolo ADD FOREIGN KEY(codigo_usuario) REFERENCES usuario(codigo);
... ...
src/main/resources/db/migration/V10__criar_tabela_tipo_documento.sql 0 → 100644
... ... @@ -0,0 +1,4 @@
  1 +CREATE TABLE tipo_documento (
  2 + codigo BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
  3 + descricao VARCHAR(50) NOT NULL
  4 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
... ...
src/main/resources/db/migration/V11__adicionar_coluna_tipo_doc_e_desc_doc_tabela_arquivos.sql 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +ALTER TABLE arquivos ADD COLUMN codigo_tipo_documento BIGINT(20);
  2 +
  3 +ALTER TABLE arquivos ADD FOREIGN KEY(codigo_tipo_documento) REFERENCES tipo_documento(codigo);
  4 +
  5 +ALTER TABLE arquivos ADD COLUMN descricao_documento VARCHAR(200);
... ...
src/main/resources/db/migration/V12__retornando_coluna_ativo_tabela_usuario.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE usuario ADD COLUMN ativo BOOLEAN DEFAULT true;
... ...
src/main/resources/db/migration/V13__remover_coluna_descricao_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo DROP COLUMN descricao;
... ...
src/main/resources/db/migration/V14__adicionar_not_null_coluna_codigo_usuario_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo MODIFY codigo_usuario BIGINT(20) NOT NULL;
... ...
src/main/resources/db/migration/V15__adicionar_coluna_status_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo ADD COLUMN status VARCHAR(10) NOT NULL DEFAULT 'PENDENTE';
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V16__adicionar_coluna_emails_secundarios_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +ALTER TABLE protocolo ADD COLUMN email1 VARCHAR(50);
  2 +ALTER TABLE protocolo ADD COLUMN email2 VARCHAR(50);
... ...
src/main/resources/db/migration/V17__alterar_conteudo_grupo_de_consulta_protocolo.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +update grupo set nome = 'Protocolo' where codigo = 2;
... ...
src/main/resources/db/migration/V18__adicionar_coluna_observacao_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo ADD COLUMN observacao VARCHAR(50);
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V19__adicionar_coluna_nupe_e_data_envio_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +ALTER TABLE protocolo ADD COLUMN nupe VARCHAR(20);
  2 +ALTER TABLE protocolo ADD COLUMN data_envio DATETIME;
0 3 \ No newline at end of file
... ...
src/main/resources/db/migration/V20__tipo_documento_insert.sql 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +INSERT INTO tipo_documento (descricao) VALUES ('APOLICE (RECEBIMENTO)');
  2 +INSERT INTO tipo_documento (descricao) VALUES ('ATA (RECEBIMENTO)');
  3 +INSERT INTO tipo_documento (descricao) VALUES ('BOLETIM');
  4 +INSERT INTO tipo_documento (descricao) VALUES ('BOLETO (RECEBIMENTO)');
  5 +INSERT INTO tipo_documento (descricao) VALUES ('CARTA (RECEBIMENTO)');
  6 +INSERT INTO tipo_documento (descricao) VALUES ('CARTA CIRCULAR (RECEBIMENTO)');
  7 +INSERT INTO tipo_documento (descricao) VALUES ('CARTA CIRCULAR CONJUNTA (RECEBIMENTO)');
  8 +INSERT INTO tipo_documento (descricao) VALUES ('COMUNICAÇÃO EXTERNA');
  9 +INSERT INTO tipo_documento (descricao) VALUES ('CONVITE');
  10 +INSERT INTO tipo_documento (descricao) VALUES ('CURRICULUM VITAE');
  11 +INSERT INTO tipo_documento (descricao) VALUES ('DECLARAÇÃO (RECEBIMENTO)');
  12 +INSERT INTO tipo_documento (descricao) VALUES ('OFÍCIO (RECEBIMENTO)');
  13 +INSERT INTO tipo_documento (descricao) VALUES ('Meu tipo');
0 14 \ No newline at end of file
... ...
src/main/resources/db/migration/V21__remover_meu_tipo_documento.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +DELETE FROM tipo_documento WHERE descricao = 'Meu tipo';
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V22__alterar_tamanho_campo_nome_tabela_arquivo.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE arquivos MODIFY nome VARCHAR(250) NOT NULL;
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V23__alterar_tamanho_campo_nome_original_tabela_arquivo.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE arquivos MODIFY nome VARCHAR(200) NOT NULL;
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V24__adicionar_coluna_nr_protocolo_anterior_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo ADD COLUMN nr_protocolo_anterior VARCHAR(50);
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V25__adicionar_coluna_id_unidade_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo ADD COLUMN id_unidade BIGINT(20);
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V26__alterar_tamanho_campo_status_tabela_protocolo.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE protocolo MODIFY status VARCHAR(20) NOT NULL DEFAULT 'PENDENTE';
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V27__alterar_tamanho_campo_ observacao _protocolo.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 + ALTER TABLE `protocolo` CHANGE `observacao` `observacao` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V28__alterar_tabela_tipodocumento_com_campo_codigo_sei_e _campo_ativo.sql 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +ALTER TABLE `tipo_documento`
  2 + ADD `codigo_sei` VARCHAR(45) NOT NULL AFTER `descricao`,
  3 + ADD `ativo` TINYINT NOT NULL AFTER `codigo_sei`;
0 4 \ No newline at end of file
... ...
src/main/resources/db/migration/V29__limpa_as_tabelas_arquivos_protocolo_e_tipodocumento.sql 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +SET sql_safe_updates=0;
  2 +
  3 +DELETE FROM arquivos;
  4 +
  5 +DELETE FROM protocolo;
  6 +
  7 +DELETE FROM tipo_documento;
  8 +
  9 +INSERT INTO tipo_documento (descricao, codigo_sei, ativo) values ('Requerimento', '238', 1);
  10 +
  11 +INSERT INTO tipo_documento (descricao, codigo_sei, ativo) values ('Complemento', '651', 1);
0 12 \ No newline at end of file
... ...
src/main/resources/db/migration/V30__tabela_usuario_estrutura_campo_email_para_unico.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE usuario ADD UNIQUE(`email`);
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V31__tabela_usuario_estrutura_campo_token_mobile.sql 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +ALTER TABLE `usuario`
  2 + ADD COLUMN `token` VARCHAR(255) NOT NULL DEFAULT '0' AFTER `ativo`;
... ...
src/main/resources/db/migration/V32__inserir_role_brasilcidadao.sql 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +INSERT INTO permissao VALUES (3, 'ROLE_BRASILCIDADAO');
  2 +
  3 +INSERT INTO grupo VALUES (3, 'Brasil Cidadao');
  4 +
  5 +INSERT INTO grupo_permissao (codigo_grupo, codigo_permissao) VALUES (3, 3);
  6 +
  7 +CREATE TABLE usuario_brasil_cidadao (
  8 + codigo BIGINT NOT NULL AUTO_INCREMENT,
  9 + cpf VARCHAR(15) NOT NULL,
  10 + codigo_usuario BIGINT NOT NULL,
  11 + FOREIGN KEY (codigo_usuario)
  12 + REFERENCES usuario(codigo)
  13 + ON UPDATE CASCADE ON DELETE RESTRICT,
  14 + PRIMARY KEY(codigo)
  15 +
  16 + );
0 17 \ No newline at end of file
... ...
src/main/resources/db/migration/V33__criacao_de_tabela_de_log_protocolo_correcao_unique_cpf.sql 0 → 100644
... ... @@ -0,0 +1,102 @@
  1 +-- MySQL Workbench Synchronization
  2 +-- Generated: 2018-02-26 14:06
  3 +-- Model: New Model
  4 +-- Version: 1.0
  5 +-- Project: Name of the project
  6 +-- Author: 01572931140
  7 +
  8 +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  9 +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  10 +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
  11 +
  12 +CREATE TABLE IF NOT EXISTS `configuracao` (
  13 + `codigo` BIGINT(20) NOT NULL AUTO_INCREMENT,
  14 + `nome` VARCHAR(45) NOT NULL,
  15 + `valor` TEXT NULL DEFAULT NULL,
  16 + `descricao` TEXT NULL DEFAULT NULL,
  17 + `id_enum` INT(11) NULL DEFAULT NULL,
  18 + `id_classificacao` INT(11) NULL DEFAULT NULL,
  19 + `classificacao` VARCHAR(45) NULL DEFAULT NULL,
  20 + PRIMARY KEY (`codigo`))
  21 +ENGINE = InnoDB
  22 +AUTO_INCREMENT = 53
  23 +DEFAULT CHARACTER SET = utf8;
  24 +
  25 +CREATE TABLE IF NOT EXISTS `log_sistema` (
  26 + `codigo` BIGINT(20) NOT NULL AUTO_INCREMENT,
  27 + `codigo_entidade` BIGINT(20) NOT NULL,
  28 + `entidade` VARCHAR(45) NOT NULL,
  29 + `acao` VARCHAR(45) NOT NULL,
  30 + `antes` TEXT NULL DEFAULT NULL,
  31 + `depois` TEXT NULL DEFAULT NULL,
  32 + `data_hora` DATETIME NOT NULL,
  33 + `codigo_usuario` BIGINT(20) NULL DEFAULT NULL,
  34 + PRIMARY KEY (`codigo`))
  35 +ENGINE = InnoDB
  36 +AUTO_INCREMENT = 33
  37 +DEFAULT CHARACTER SET = utf8;
  38 +
  39 +CREATE TABLE IF NOT EXISTS `temp_arquivo` (
  40 + `id` INT(11) NOT NULL AUTO_INCREMENT,
  41 + `nome` VARCHAR(255) NOT NULL,
  42 + `pagina` VARCHAR(10) NOT NULL,
  43 + `temp_desc_arquivo_idarquivo` VARCHAR(2) NOT NULL,
  44 + `temp_desc_arquivo_token` VARCHAR(6) NOT NULL,
  45 + PRIMARY KEY (`id`),
  46 + INDEX `fk_temp_arquivo_temp_desc_arquivo1_idx` (`temp_desc_arquivo_idarquivo` ASC, `temp_desc_arquivo_token` ASC),
  47 + CONSTRAINT `fk_temp_arquivo_temp_desc_arquivo1`
  48 + FOREIGN KEY (`temp_desc_arquivo_idarquivo` , `temp_desc_arquivo_token`)
  49 + REFERENCES `temp_desc_arquivo` (`idarquivo` , `token`)
  50 + ON DELETE NO ACTION
  51 + ON UPDATE NO ACTION)
  52 +ENGINE = InnoDB
  53 +DEFAULT CHARACTER SET = latin1;
  54 +
  55 +CREATE TABLE IF NOT EXISTS `temp_desc_arquivo` (
  56 + `tipo` VARCHAR(45) NOT NULL,
  57 + `qtd_paginas` VARCHAR(10) NOT NULL,
  58 + `temp_protocolo_token` VARCHAR(6) NOT NULL,
  59 + `idarquivo` VARCHAR(2) NOT NULL,
  60 + `token` VARCHAR(6) NOT NULL,
  61 + `descricao` VARCHAR(45) NOT NULL,
  62 + PRIMARY KEY (`idarquivo`, `token`),
  63 + INDEX `fk_temp_desc_arquivo_temp_protocolo1_idx` (`temp_protocolo_token` ASC),
  64 + CONSTRAINT `fk_temp_desc_arquivo_temp_protocolo1`
  65 + FOREIGN KEY (`temp_protocolo_token`)
  66 + REFERENCES `temp_protocolo` (`token`)
  67 + ON DELETE NO ACTION
  68 + ON UPDATE NO ACTION)
  69 +ENGINE = InnoDB
  70 +DEFAULT CHARACTER SET = latin1;
  71 +
  72 +CREATE TABLE IF NOT EXISTS `temp_protocolo` (
  73 + `token` VARCHAR(6) NOT NULL,
  74 + `email1` VARCHAR(100) NULL DEFAULT NULL,
  75 + `email2` VARCHAR(100) CHARACTER SET 'big5' NULL DEFAULT NULL,
  76 + `nr_protocolo_anterior` VARCHAR(100) NULL DEFAULT NULL,
  77 + `usuario_codigo` BIGINT(20) NOT NULL,
  78 + PRIMARY KEY (`token`),
  79 + INDEX `fk_temp_protocolo_usuario1_idx` (`usuario_codigo` ASC),
  80 + CONSTRAINT `fk_temp_protocolo_usuario1`
  81 + FOREIGN KEY (`usuario_codigo`)
  82 + REFERENCES `usuario` (`codigo`)
  83 + ON DELETE NO ACTION
  84 + ON UPDATE NO ACTION)
  85 +ENGINE = InnoDB
  86 +DEFAULT CHARACTER SET = latin1;
  87 +
  88 +ALTER TABLE `usuario`
  89 +ADD COLUMN `nome_social` VARCHAR(50) NULL DEFAULT NULL AFTER `token`;
  90 +
  91 +ALTER TABLE `temp_arquivo`
  92 +CHARACTER SET = utf8 ;
  93 +
  94 +ALTER TABLE `temp_desc_arquivo`
  95 +CHARACTER SET = utf8 ;
  96 +
  97 +ALTER TABLE `temp_protocolo`
  98 +CHARACTER SET = utf8 ;
  99 +
  100 +SET SQL_MODE=@OLD_SQL_MODE;
  101 +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  102 +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
... ...
src/main/resources/db/migration/V34__correcao_tabela_log.sql 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +-- MySQL Workbench Synchronization
  2 +-- Generated: 2018-03-01 16:29
  3 +-- Model: New Model
  4 +-- Version: 1.0
  5 +-- Project: Name of the project
  6 +-- Author: 01572931140
  7 +
  8 +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  9 +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  10 +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
  11 +
  12 +--ALTER TABLE `protocolo`.`log_sistema`
  13 +--CHANGE COLUMN `codigo` `codigo` BIGINT(20) NOT NULL AUTO_INCREMENT ,
  14 +--ADD COLUMN `codigo_usuario` BIGINT(20) NULL DEFAULT NULL AFTER `data_hora`;
  15 +
  16 +
  17 +SET SQL_MODE=@OLD_SQL_MODE;
  18 +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  19 +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
... ...
src/main/resources/db/migration/V35__tabela_metadad_configuracao_email.sql 0 → 100644
... ... @@ -0,0 +1,180 @@
  1 +-- MySQL Workbench Synchronization
  2 +-- Generated: 2018-03-07 12:38
  3 +-- Model: New Model
  4 +-- Version: 1.0
  5 +-- Project: Name of the project
  6 +-- Author: 01572931140
  7 +
  8 +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  9 +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  10 +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
  11 +
  12 +ALTER TABLE `configuracao`
  13 +CHANGE COLUMN `codigo` `codigo` INT(11) NOT NULL AUTO_INCREMENT ;
  14 +
  15 +CREATE TABLE IF NOT EXISTS `configuracao_email` (
  16 + `codigo` INT(11) NOT NULL,
  17 + `nome` VARCHAR(45) NULL DEFAULT NULL,
  18 + `valor` TEXT NULL DEFAULT NULL,
  19 + PRIMARY KEY (`codigo`))
  20 +ENGINE = InnoDB
  21 +DEFAULT CHARACTER SET = utf8;
  22 +
  23 +CREATE TABLE IF NOT EXISTS `metadado` (
  24 + `codigo` INT(11) NOT NULL,
  25 + `nome` VARCHAR(45) NOT NULL,
  26 + `valor` TEXT NULL DEFAULT NULL,
  27 + `descricao` TEXT NULL DEFAULT NULL,
  28 + PRIMARY KEY (`codigo`))
  29 +ENGINE = InnoDB
  30 +DEFAULT CHARACTER SET = utf8;
  31 +
  32 +CREATE TABLE IF NOT EXISTS `metadado_email` (
  33 + `codigo_email` INT(11) NOT NULL,
  34 + `codigo_metadado` INT(11) NOT NULL,
  35 + PRIMARY KEY (`codigo_metadado`, `codigo_email`),
  36 + INDEX `fk_metadado_email_configuracao_email1_idx` (`codigo_email` ASC),
  37 + CONSTRAINT `metadado_email_fk1`
  38 + FOREIGN KEY (`codigo_email`)
  39 + REFERENCES `configuracao_email` (`codigo`)
  40 + ON DELETE NO ACTION
  41 + ON UPDATE NO ACTION,
  42 + CONSTRAINT `metadado_email_fk2`
  43 + FOREIGN KEY (`codigo_metadado`)
  44 + REFERENCES `metadado` (`codigo`)
  45 + ON DELETE NO ACTION
  46 + ON UPDATE NO ACTION)
  47 +ENGINE = InnoDB
  48 +DEFAULT CHARACTER SET = utf8;
  49 +
  50 +SET SQL_MODE=@OLD_SQL_MODE;
  51 +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  52 +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
  53 +
  54 +
  55 +/*
  56 +-- Insert protocolo.configuracao
  57 +LIMIT 0, 1000
  58 +
  59 +-- Date: 2018-03-07 12:42
  60 +*/
  61 +SET FOREIGN_KEY_CHECKS = 0;
  62 +truncate table `configuracao`;
  63 +SET FOREIGN_KEY_CHECKS = 1;
  64 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (1,'SMTP_SERVER','10.209.253.28','',1,1,'server-email');
  65 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (2,'SMTP_PORT','25','teste3',2,1,'server-email');
  66 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (3,'MAIL_FROM','xxx@yyy.zzz','',3,1,'server-email');
  67 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (4,'EMAIL_RESPONSAVEL','sss@sssf.com',NULL,4,1,'server-email');
  68 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (9,'URL_AUTORIZAR','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/authorize',NULL,17,4,'brasil-cidadao');
  69 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (10,'URL_TOKEN','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/token',NULL,18,4,'brasil-cidadao');
  70 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (11,'URL_DADOS_USUARIO','https://testeservicos-ecidadao.estaleiro.serpro.gov.br/servicos-ecidadao/ecidadao/usuario/getUserInfo/',NULL,19,4,'brasil-cidadao');
  71 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (12,'CLIENT_ID','516a9b57-d022-4843-a792-93b4dc95622b',NULL,20,4,'brasil-cidadao');
  72 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (13,'SCOPE','openid',NULL,21,4,'brasil-cidadao');
  73 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (14,'REDIRECT_URI','https://protocolo.planejamento.gov.br/login',NULL,22,4,'brasil-cidadao');
  74 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (15,'CLIENT_SECRET','Ld65DuKIva0_EU0LO1VrVC6Be7b-_AsgvkueKpW4OJlhDdJQ4TJ9nKB173M5c5mmG03uhZvEbBKnDRmAe7gZkw',NULL,23,4,'brasil-cidadao');
  75 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (16,'ESCOPO','dados_brasil_cidadao',NULL,24,4,'brasil-cidadao');
  76 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (18,'URL_BRASIL_CIDADAO','https://testescp-ecidadao.estaleiro.serpro.gov.br/scp/login',NULL,25,4,'brasil-cidadao');
  77 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (19,'URL_PRIMEIRO_ACESSO','https://testeportal-ecidadao.estaleiro.serpro.gov.br/servicos-cidadao/acesso/#/primeiro-acesso',NULL,26,4,'brasil-cidadao');
  78 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (20,'STORAGE_PATH','E:/Ambiente/Desenvolvimento/estorage/temp','teste2',16,3,'storage');
  79 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (21,'URL_ENDPOINT','https://seitreina.nuvem.gov.br/sei/ws/SeiWS.php','teste4',5,2,'sei');
  80 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (22,'ASSUNTO_CODIGO_ESTRUTURADO','520.1',NULL,6,2,'sei');
  81 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (23,'PROCEDIMENTO_ESPECIFICADO','Especificacao do processo',NULL,7,2,'sei');
  82 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (24,'PROCEDIMENTO_NIVEL_ACESSO','0',NULL,8,2,'sei');
  83 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (25,'PROCEDIMENTO_ID_TIPO_PROCEDIMENTO','100000346',NULL,9,2,'sei');
  84 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (26,'DOCUMENTO_TIPO','R',NULL,10,2,'sei');
  85 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (27,'DOCUMENTO_ID_SERIE','1',NULL,11,2,'sei');
  86 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (28,'DOCUMENTO_NIVEL_ACESSO','0',NULL,12,2,'sei');
  87 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (29,'SIGLA_SISTEMA','UNB',NULL,13,2,'sei');
  88 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (30,'IDENTIFICACAO_SERVICO','testeunb',NULL,14,2,'sei');
  89 +INSERT INTO `configuracao` (`codigo`,`nome`,`valor`,`descricao`,`id_enum`,`id_classificacao`,`classificacao`) VALUES (31,'ID_UNIDADE','110001972',NULL,15,2,'sei');
  90 +
  91 +/*
  92 +-- insert protocolo.configuracao_email
  93 +LIMIT 0, 1000
  94 +
  95 +-- Date: 2018-03-07 12:41
  96 +*/
  97 +SET FOREIGN_KEY_CHECKS = 0;
  98 +truncate table `configuracao_email`;
  99 +SET FOREIGN_KEY_CHECKS = 1;
  100 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (1,'EMAIL_CONTEUDO_CADASTRO','<p><span>PREZADO(A),</span></p>\r\n<p style=\"text-align: justify;\"><span><br />SEJA&nbsp;BEM&nbsp;VINDO&nbsp;AO&nbsp;SISTEMA&nbsp;DE PROTOCOLIZA&Ccedil;&Atilde;O&nbsp;ELETR&Ocirc;NICA&nbsp;DE&nbsp;DOCUMENTOS DO&nbsp;MINIST&Eacute;RIO&nbsp;DO&nbsp;PLANEJAMENTO, DESENVOLVIMENTO&nbsp;E&nbsp;GEST&Atilde;O.&nbsp;PARA&nbsp;CONCLUIR&nbsp;O SEU&nbsp;CADASTRO,&nbsp;ACESSE&nbsp;O&nbsp;LINK&nbsp;&nbsp;<span>{$METADADO_USUARIO_URLCONFIRMACAO}</span></span></p>\r\n<p><span><br />ESSE&nbsp;PASSO&nbsp;&Eacute;&nbsp;IMPORTANTE&nbsp;PARA&nbsp;VALIDARMOS TODOS&nbsp;OS&nbsp;USU&Aacute;RIOS.</span></p>');
  101 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (2,'EMAIL_CONTEUDO_CONSOLIDACAO','<p><span>PREZADO(A),</span></p>\r\n<p style=\"text-align: justify;\"><span><br />SEJA&nbsp;BEM&nbsp;VINDO&nbsp;AO&nbsp;SISTEMA&nbsp;DE PROTOCOLIZA&Ccedil;&Atilde;O&nbsp;ELETR&Ocirc;NICA&nbsp;DE&nbsp;DOCUMENTOS DO&nbsp;MINIST&Eacute;RIO&nbsp;DO&nbsp;PLANEJAMENTO, DESENVOLVIMENTO&nbsp;E&nbsp;GEST&Atilde;O.&nbsp;PARA&nbsp;CONCLUIR&nbsp;O SEU&nbsp;CADASTRO,&nbsp;ACESSE&nbsp;O&nbsp;LINK&nbsp;&nbsp;<span>{$METADADO_USUARIO_URLCONSILIACAO}</span></span></p>\r\n<p><span><br />ESSE&nbsp;PASSO&nbsp;&Eacute;&nbsp;IMPORTANTE&nbsp;PARA&nbsp;VALIDARMOS TODOS&nbsp;OS&nbsp;USU&Aacute;RIOS.</span></p>');
  102 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (3,'EMAIL_CONTEUDO_ERRO_SEI','<h1 style=\"font-size: 15px;\">Erro ao enviar o protocolo N&ordm;&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span>para o SEI</h1>\r\n<p>Detalhe do Erro:&nbsp;<span>{$METADADO_MSGERRO}</span>.</p>');
  103 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (4,'EMAIL_CONTEUDO_ESQUECI_SENHA','<p style=\"font-size: 15px;\">Recebemos uma solicita&ccedil;&atilde;o de recupera&ccedil;&atilde;o de senha, por isso estamos enviando uma nova para que voc&ecirc; possa continuar usando nosso sistema de protocolo.</p>\r\n<h1 style=\"font-size: 15px;\">Sua nova senha &eacute;:&nbsp;<span>{$METADADO_USUARIO_NOVASENHA}</span></h1>');
  104 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (5,'EMAIL_CONTEUDO_PROTOCOLO','<h3>N&uacute;mero do Protocolo Provis&oacute;rio:&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span></h3>\r\n<p style=\"text-align: justify;\">N&uacute;mero &Uacute;nico de Protocolo: Ser&aacute; enviado para o(s) e-mail(s) cadastrado(s) no prazo m&aacute;ximo de vinte e quatro horas, contadas do recebimento, salvo quando este ocorrer &agrave;s sextas-feiras, v&eacute;spera de feriados ou pontos facultativos ou haja restri&ccedil;&atilde;o t&eacute;cnica da unidade, devidamente fundamentada.</p>\r\n<p>Data:&nbsp;<span>{$METADADO_PROTOCOLO_DATAHORAFORMADATA}</span></p>\r\n<p>Nome:&nbsp;<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:&nbsp;<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>\r\n<p>Refer&ecirc;ncia ao protocolo anterior:&nbsp;<span>{$METADADO_PROTOCOLO_NUMEROANTERIOR}</span></p>\r\n<p><span>{$METADADO_PROTOCOLO_TABELAARQUIVO}</span></p>');
  105 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (6,'EMAIL_CONTEUDO_NEGADO','<h3>N&uacute;mero do Protocolo Provis&oacute;rio:&nbsp;<span>{$METADADO_PROTOCOLO_NUMERO}</span></h3>\r\n<p style=\"text-align: justify;\">Prezado (a)<span>{$METADADO_PROTOCOLO_USUARIONOME}</span>, <br /> Esta &eacute; uma mensagem autom&aacute;tica e n&atilde;o deve ser respondida. <br /> Seu protocolo n&atilde;o foi aceito pelo motivo abaixo especificado: <br /><span>{$METADADO_PROTOCOLO_OBSERVACAO}</span></p>\r\n<p>Nome:<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>');
  106 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (7,'EMAIL_CONTEUDO_RECEBIMENTO_SEI','<h3>N&uacute;mero &Uacute;nico de Protocolo:<span>{$METADADO_PROTOCOLO_NUPE}</span></h3>\r\n<p style=\"text-align: justify;\">Prezado (a) usu&aacute;rio (a), Esta &eacute; uma mensagem autom&aacute;tica e n&atilde;o deve ser respondida. Informamos que seu protocolo foi entregue ao setor respons&aacute;vel e que foi gerado o NUP:<span>{$METADADO_PROTOCOLO_NUPE}</span>. Quaisquer diverg&ecirc;ncias das informa&ccedil;&otilde;es prestadas ou problemas nos arquivos anexados ser&atilde;o comunicados ao (&agrave;) senhor (a) atrav&eacute;s dos e-mails informados em seu cadastro. Informa&ccedil;&otilde;es referentes &agrave; tramita&ccedil;&atilde;o de seu processo ser&atilde;o atualizadas at&eacute; 24 horas e estar&atilde;o acess&iacute;veis no s&iacute;tio do protocolo integrado do Governo Federal, dispon&iacute;vel em&nbsp;<span>{$METADADO_PROTOCOLO_LINKSEI}</span></p>\r\n<p>Data:<span>{$METADADO_PROTOCOLO_DATAHORAFORMADATA}</span>}.</p>\r\n<p>Nome:<span>{$METADADO_PROTOCOLO_USUARIONOME}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_USUARIOEMAIL}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL1}</span></p>\r\n<p>E-mail:<span>{$METADADO_PROTOCOLO_EMAIL2}</span></p>\r\n<p>Refer&ecirc;ncia ao protocolo anterior:</p>\r\n<p><span>{$METADADO_PROTOCOLO_TABELAARQUIVO}</span></p>');
  107 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (8,'EMAIL_CABECALHO','<table>\r\n<tbody>\r\n<tr style=\"text-align: center;\">\r\n<td><span>{$METADADO_LOGO_EMAIL}</span></td>\r\n</tr>\r\n<tr style=\"text-align: center;\">\r\n<td>\r\n<h4>Minist&eacute;rio do Planejamento, Desenvolvimento e Gest&atilde;o <br /> Protocolo Central <br /> Esplanada dos Minist&eacute;rios Bloco K, T&eacute;rreo, sala T 28, CEP 70.040-906 &ndash; Bras&iacute;lia-DF <br /> protocolo@planejamento.gov.br <br /> (61) 2020-5195/5580&nbsp;</h4>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>');
  108 +INSERT INTO `configuracao_email` (`codigo`,`nome`,`valor`) VALUES (9,'EMAIL_RODAPE','<p>&nbsp;</p>\r\n<p>&ldquo;Por gentileza, responda nossa pesquisa de satisfa&ccedil;&atilde;o do Sistema de Protocolo Eletr&ocirc;nico. Sua contribui&ccedil;&atilde;o &eacute; de extrema valia. <a href=\"http://formsus.datasus.gov.br/site/formulario.php?id_aplicacao=36481\" target=\"_blank\" rel=\"noopener\"> Clique aqui</a>&rdquo;</p>\r\n<p>&nbsp;</p>\r\n<p style=\"text-align: justify; font-size: 10px;\">S&atilde;o de exclusiva responsabilidade do usu&aacute;rio: A conformidade entre os dados informados e os documentos; A conserva&ccedil;&atilde;o dos originais em papel de documentos digitalizados at&eacute; que decaia o direito de revis&atilde;o dos atos praticados no processo, para que, caso solicitado, sejam apresentados para qualquer tipo de confer&ecirc;ncia; A observa&ccedil;&atilde;o de que os atos processuais se consideram realizados no dia e hora do recebimento pelo SEI, considerando-se tempestivos os praticados at&eacute; 23h59min59s do &uacute;ltimo dia do prazo, considerando sempre o hor&aacute;rio oficial de Bras&iacute;lia, independente do fuso hor&aacute;rio em que se encontre.&nbsp;</p>');
  109 +
  110 +/*
  111 +-- Insert protocolo.metadado
  112 +LIMIT 0, 1000
  113 +
  114 +-- Date: 2018-03-07 12:42
  115 +*/
  116 +SET FOREIGN_KEY_CHECKS = 0;
  117 +truncate table `metadado`;
  118 +SET FOREIGN_KEY_CHECKS = 1;
  119 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (1,'METADADO_LOGO_EMAIL','<img src=\"../../static/images/brasao-brasil.png\" th:src=\"|cid:logo|\"/>','Imagem do logótipo do ministério.');
  120 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (2,'METADADO_MSGERRO','<span th:text=\"&{msgErro}\">Erro no protocolo.</span>','Mensagem de erro ao enviar ao SEI.');
  121 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (3,'METADADO_PROTOCOLO_DATAHORAFORMADATA','<span th:text=\"&{protocolo.dataHoraFormatada}\">','Data de criação do protocolo.');
  122 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (4,'METADADO_PROTOCOLO_EMAIL1','<span th:text=\"&{protocolo.email1}\">E-mail: protocolo.email1</span>','E-mail 1 de interessado.');
  123 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (5,'METADADO_PROTOCOLO_EMAIL2','<span th:text=\"&{protocolo.email2}\">E-mail: protocolo.emails</span>','E-mail 2 de interessado.');
  124 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (6,'METADADO_PROTOCOLO_LINKSEI','<span th:text=\"&{protocolo.linkSEI}\">linksei</span>','Link de acesso ao protocolo no SEI.');
  125 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (7,'METADADO_PROTOCOLO_NUMERO','<span th:text=\"&{protocolo.numero}\">Nmero do Protocolo Provisrio: 123ads31232asfd</span>','Numero do protocolo.');
  126 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (8,'METADADO_PROTOCOLO_NUMEROANTERIOR','<span th:text=\"&{protocolo.numeroProtocoloAnterior}\">Referncia ao protocolo anterior: 121345461</span>','Numero de protocolo anterior.');
  127 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (9,'METADADO_PROTOCOLO_NUPE','<span th:text=\"&{protocolo.nupe}\">protocolo.nupe</span>','Numero único do protocolo no SEI.');
  128 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (10,'METADADO_PROTOCOLO_OBSERVACAO','<span th:text=\"&{protocolo.observacao}\">observacao</span>','Obsersavação cadastrada no cancelamento do protocolo.');
  129 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (11,'METADADO_PROTOCOLO_TABELAARQUIVO','<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\" style=\"width: 100%\">\n <thead>\n <tr>\n <td style=\"text-align: center\">\n Descrição do documento\n </td>\n <td style=\"text-align: center\">\n Arquivo\n </td>\n </tr>\n </thead>\n <tbody>\n <tr th:each=\"arquivo: &{protocolo.arquivosList}\">\n <td th:text=\"&{arquivo.tipoDocumento.descricao}\">&{arquivo.tipoDocumento.descricao}</td>\n <td th:text=\"&{arquivo.nomeOriginal}\">&{arquivo.nomeOriginal}</td>\n </tr>\n </tbody>\n</table>','Tabela com a lista de arquivos do protocolo.');
  130 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (12,'METADADO_PROTOCOLO_USUARIOEMAIL','<span th:text=\"&{protocolo.usuario.email}\">E-mail: protocolo.email1</span>','E-mail do usuário que cadastrou o protocolo.');
  131 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (13,'METADADO_PROTOCOLO_USUARIONOME','<span th:text=\"&{protocolo.usuario.nome}\">& usuario nome</span>','Nome do usuário que cadastrou o protocolo.');
  132 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (14,'METADADO_USUARIO_NOVASENHA','<span th:text=\"&{usuario.senha}\">Sua nova senha : 5as4f56as4f5as4</span>','Nova senha gerada para o usuário.');
  133 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (15,'METADADO_USUARIO_URLCONFIRMACAO','<a th:href=\"&{usuario.urlConfirmacaoCadastro}\">CONFIRMAR&nbsp;MEU CADASTRO.</a>','Url para ativação do usuário.');
  134 +INSERT INTO `metadado` (`codigo`,`nome`,`valor`,`descricao`) VALUES (16,'METADADO_USUARIO_URLCONSILIACAO','<a th:href=\"&{usuario.urlConfirmacaoCadastro}\">CONFIRMAR&nbsp;MEU CADASTRO.</a>','Url para consiliação de usuário protocolo com usuário brasil cidadão.');
  135 +UPDATE metadado SET valor = REPLACE(valor,'&','$');
  136 +
  137 +/*
  138 +-- insert protocolo.metadado_email
  139 +LIMIT 0, 1000
  140 +
  141 +-- Date: 2018-03-07 12:42
  142 +*/
  143 +SET FOREIGN_KEY_CHECKS = 0;
  144 +truncate table `metadado_email`;
  145 +SET FOREIGN_KEY_CHECKS = 1;
  146 +
  147 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (1,15);
  148 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (2,16);
  149 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (3,2);
  150 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (3,7);
  151 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (4,14);
  152 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,3);
  153 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,4);
  154 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,5);
  155 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,7);
  156 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,8);
  157 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,10);
  158 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,11);
  159 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,12);
  160 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (5,13);
  161 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,3);
  162 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,4);
  163 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,5);
  164 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,7);
  165 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,10);
  166 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,12);
  167 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (6,13);
  168 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,3);
  169 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,4);
  170 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,5);
  171 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,6);
  172 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,7);
  173 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,8);
  174 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,9);
  175 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,10);
  176 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,11);
  177 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,12);
  178 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (7,13);
  179 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (8,1);
  180 +INSERT INTO `metadado_email` (`codigo_email`,`codigo_metadado`) VALUES (9,1);
... ...
src/main/resources/db/migration/V36__tabela_protocolo_erro_ws.sql 0 → 100644
... ... @@ -0,0 +1 @@
  1 +ALTER TABLE `protocolo` ADD `erro_ws` TEXT NULL AFTER `data_envio`;
0 2 \ No newline at end of file
... ...
src/main/resources/db/migration/V37__correcao_metadado_urlconfirmacao.sql 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +
  2 +UPDATE metadado
  3 + SET valor=concat('<a th:href="', '$', '{usuario.urlConfirmacaoCadastro}">CONFIRMAR MEU CADASTRO.</a>')
  4 + WHERE (codigo=15);
  5 +
  6 +UPDATE metadado
  7 + SET valor=concat('<a th:href="', '$', '{usuario.urlConfirmacaoCadastro}">CONFIRMAR MEU CADASTRO.</a>')
  8 + WHERE (codigo=16);
  9 +
  10 +UPDATE configuracao_email
  11 + SET valor=concat('<h4 style="background-color: #fafafa; color: #626262; text-align: center;"><span>{', '$', 'METADADO_LOGO_EMAIL}</span></h4><h4 style="background-color: #fafafa; color: #626262; text-align: center;">Minist&eacute;rio do Planejamento, Desenvolvimento e Gest&atilde;o&nbsp;<br />Protocolo Central&nbsp;<br />Esplanada dos Minist&eacute;rios Bloco K, T&eacute;rreo, sala T 28, CEP 70.040-906 &ndash; Bras&iacute;lia-DF&nbsp;<br />protocolo@planejamento.gov.br&nbsp;<br />(61) 2020-5195/5580&nbsp;</h4>')
  12 + WHERE (codigo=8);
0 13 \ No newline at end of file
... ...