Commit 8cca72681efe39b3601eef9cf5e7638350f88d50

Authored by andre.guimaraes
1 parent ca4ef3f8

Refatora serviço de consulta a processo

- Cria parâmetro que desabilita consulta ao SIPAR
- Consulta ao SIPAR deixa de ser realizada caso processo exista no SEI
- Move algumas classes para novos pacotes
src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java
@@ -1,80 +0,0 @@ @@ -1,80 +0,0 @@
1 -package br.gov.ans.integracao.sei.dao;  
2 -  
3 -import java.math.BigDecimal;  
4 -import java.util.HashMap;  
5 -import java.util.List;  
6 -import java.util.Map;  
7 -  
8 -import javax.ejb.Stateful;  
9 -import javax.inject.Inject;  
10 -import javax.persistence.EntityManager;  
11 -import javax.persistence.PersistenceContext;  
12 -import javax.persistence.PersistenceContextType;  
13 -import javax.persistence.Query;  
14 -  
15 -import br.gov.ans.dao.DAO;  
16 -import br.gov.ans.integracao.sipar.dao.ControleMigracao;  
17 -import br.gov.ans.integracao.sipar.dao.ControleMigracaoId;  
18 -import br.gov.ans.integracao.sipar.dao.DocumentoSipar;  
19 -  
20 -@Stateful  
21 -public class SiparDAO {  
22 -  
23 - @PersistenceContext(unitName = "sei_broker_pu", type = PersistenceContextType.EXTENDED)  
24 - private EntityManager em;  
25 -  
26 - @SuppressWarnings("cdi-ambiguous-dependency")  
27 - @Inject  
28 - private DAO<DocumentoSipar> daoDocumento;  
29 -  
30 - @Inject  
31 - private DAO<ControleMigracao> daoMigracao;  
32 -  
33 - public DocumentoSipar getDocumento(String numeroDocumento, String anoDocumento, String digitoDocumento){  
34 -  
35 - Map<String, Object> params = new HashMap<String, Object>();  
36 - params.put("numeroDocumento", numeroDocumento);  
37 - params.put("anoDocumento", anoDocumento);  
38 - params.put("digitoDocumento", digitoDocumento);  
39 -  
40 - List<DocumentoSipar> resultado = daoDocumento.executeNamedQuery("documentoPorNumeroAnoDigito", params);  
41 -  
42 - if(resultado.isEmpty()){  
43 - return null;  
44 - }  
45 -  
46 - return resultado.get(0);  
47 - }  
48 -  
49 - public ControleMigracao buscaProcessoImportado(ControleMigracaoId id){  
50 - return daoMigracao.findById(id);  
51 - }  
52 -  
53 - public boolean isProcessoEmTramitacao(String numero, String ano){  
54 -  
55 - String sql = "SELECT count(*) FROM DBPSIPAR.TB_TRAMITACAO TR "  
56 - + "WHERE "  
57 - + "TR.DT_RECEBIMENTO IS NULL "  
58 - + "AND TR.CO_DOCUMENTO = :numero "  
59 - + "AND TR.NU_ANO_DOCUMENTO = :ano "  
60 - + "AND TR.DT_ENVIO = ("  
61 - + " SELECT MAX(TR2.DT_ENVIO) FROM DBPSIPAR.TB_TRAMITACAO TR2 WHERE TR2.CO_DOCUMENTO = :numero AND TR2.NU_ANO_DOCUMENTO = :ano"  
62 - + ")";  
63 -  
64 - Query query = em.createNativeQuery(sql);  
65 - query.setParameter("numero", numero);  
66 - query.setParameter("ano", ano);  
67 -  
68 - Long count = ((BigDecimal) query.getSingleResult()).longValue();  
69 -  
70 - if(count > 0L){  
71 - return true;  
72 - }  
73 - return false;  
74 - }  
75 -  
76 - public void merge(ControleMigracao controleMigracao){  
77 - daoMigracao.merge(controleMigracao);  
78 - }  
79 -  
80 -}  
src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaDocumento.java
@@ -6,7 +6,7 @@ import org.codehaus.jackson.annotate.JsonIgnoreProperties; @@ -6,7 +6,7 @@ import org.codehaus.jackson.annotate.JsonIgnoreProperties;
6 import org.codehaus.jackson.map.annotate.JsonSerialize; 6 import org.codehaus.jackson.map.annotate.JsonSerialize;
7 7
8 import br.gov.ans.integracao.sei.client.RetornoConsultaDocumento; 8 import br.gov.ans.integracao.sei.client.RetornoConsultaDocumento;
9 -import br.gov.ans.integracao.sipar.dao.DocumentoSipar; 9 +import br.gov.ans.integracao.sipar.modelo.DocumentoSipar;
10 10
11 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) 11 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
12 @JsonIgnoreProperties(ignoreUnknown = true) 12 @JsonIgnoreProperties(ignoreUnknown = true)
src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaProcesso.java
@@ -6,7 +6,7 @@ import org.codehaus.jackson.annotate.JsonIgnoreProperties; @@ -6,7 +6,7 @@ import org.codehaus.jackson.annotate.JsonIgnoreProperties;
6 import org.codehaus.jackson.map.annotate.JsonSerialize; 6 import org.codehaus.jackson.map.annotate.JsonSerialize;
7 7
8 import br.gov.ans.integracao.sei.client.RetornoConsultaProcedimento; 8 import br.gov.ans.integracao.sei.client.RetornoConsultaProcedimento;
9 -import br.gov.ans.integracao.sipar.dao.DocumentoSipar; 9 +import br.gov.ans.integracao.sipar.modelo.DocumentoSipar;
10 10
11 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) 11 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
12 @JsonIgnoreProperties(ignoreUnknown = true) 12 @JsonIgnoreProperties(ignoreUnknown = true)
src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java
@@ -46,7 +46,6 @@ import br.gov.ans.integracao.sei.client.TipoProcedimento; @@ -46,7 +46,6 @@ import br.gov.ans.integracao.sei.client.TipoProcedimento;
46 import br.gov.ans.integracao.sei.client.Unidade; 46 import br.gov.ans.integracao.sei.client.Unidade;
47 import br.gov.ans.integracao.sei.dao.DocumentoDAO; 47 import br.gov.ans.integracao.sei.dao.DocumentoDAO;
48 import br.gov.ans.integracao.sei.dao.ProcessoDAO; 48 import br.gov.ans.integracao.sei.dao.ProcessoDAO;
49 -import br.gov.ans.integracao.sei.dao.SiparDAO;  
50 import br.gov.ans.integracao.sei.dao.UnidadeDAO; 49 import br.gov.ans.integracao.sei.dao.UnidadeDAO;
51 import br.gov.ans.integracao.sei.exceptions.BusinessException; 50 import br.gov.ans.integracao.sei.exceptions.BusinessException;
52 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException; 51 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException;
@@ -63,15 +62,12 @@ import br.gov.ans.integracao.sei.modelo.ProcessoResumido; @@ -63,15 +62,12 @@ import br.gov.ans.integracao.sei.modelo.ProcessoResumido;
63 import br.gov.ans.integracao.sei.modelo.ResultadoConsultaProcesso; 62 import br.gov.ans.integracao.sei.modelo.ResultadoConsultaProcesso;
64 import br.gov.ans.integracao.sei.modelo.SobrestamentoProcesso; 63 import br.gov.ans.integracao.sei.modelo.SobrestamentoProcesso;
65 import br.gov.ans.integracao.sei.utils.Constantes; 64 import br.gov.ans.integracao.sei.utils.Constantes;
66 -import br.gov.ans.integracao.sipar.dao.DocumentoSipar; 65 +import br.gov.ans.integracao.sipar.modelo.DocumentoSipar;
67 import br.gov.ans.utils.MessageUtils; 66 import br.gov.ans.utils.MessageUtils;
68 67
69 68
70 @Path("") 69 @Path("")
71 public class ProcessoResource { 70 public class ProcessoResource {
72 -  
73 - @Inject  
74 - private SiparDAO documentoSiparDAO;  
75 71
76 @Inject 72 @Inject
77 private ProcessoDAO processoDAO; 73 private ProcessoDAO processoDAO;
@@ -87,7 +83,10 @@ public class ProcessoResource { @@ -87,7 +83,10 @@ public class ProcessoResource {
87 83
88 @Inject 84 @Inject
89 private UnidadeResource unidadeResource; 85 private UnidadeResource unidadeResource;
90 - 86 +
  87 + @Inject
  88 + private SiparResource siparResource;
  89 +
91 @Inject 90 @Inject
92 private MessageUtils messages; 91 private MessageUtils messages;
93 92
@@ -103,61 +102,74 @@ public class ProcessoResource { @@ -103,61 +102,74 @@ public class ProcessoResource {
103 @GET 102 @GET
104 @Path("{unidade}/processos/{processo:\\d+}") 103 @Path("{unidade}/processos/{processo:\\d+}")
105 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 104 @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
106 - public ResultadoConsultaProcesso consultarProcesso(@PathParam("unidade") String unidade, @PathParam("processo") String processo,  
107 - @QueryParam("assuntos") String exibirAssuntos, @QueryParam("interessados") String exibirInteressados, @QueryParam("observacoes") String exibirObservacoes,  
108 - @QueryParam("andamento") String exibirAndamento, @QueryParam("andamento-conclusao") String exibirAndamentoConclusao, @QueryParam("ultimo-andamento") String exibirUltimoAndamento,  
109 - @QueryParam("unidades") String exibirUnidadesAberto, @QueryParam("relacionados") String exibirProcessosRelacionados, @QueryParam("anexados") String exibirProcessosAnexados,  
110 - @QueryParam("auto-formatacao") String autoFormatar) throws Exception{ 105 + public Response ConsultarProcessoV2(@PathParam("unidade") String unidade, @PathParam("processo") String processo,
  106 + @QueryParam("assuntos") String exibirAssuntos, @QueryParam("interessados") String exibirInteressados,
  107 + @QueryParam("observacoes") String exibirObservacoes, @QueryParam("andamento") String exibirAndamento,
  108 + @QueryParam("andamento-conclusao") String exibirAndamentoConclusao,
  109 + @QueryParam("ultimo-andamento") String exibirUltimoAndamento,
  110 + @QueryParam("unidades") String exibirUnidadesAberto,
  111 + @QueryParam("relacionados") String exibirProcessosRelacionados,
  112 + @QueryParam("anexados") String exibirProcessosAnexados,
  113 + @QueryParam("auto-formatacao") String autoFormatar) throws RemoteException, Exception {
  114 +
  115 + if (Constantes.IS_CONSULTA_SIPAR_HABILITADA) {
  116 + return Response.ok(consultarProcessoANS(unidade, processo, exibirAssuntos, exibirInteressados,
  117 + exibirObservacoes, exibirAndamento, exibirAndamentoConclusao, exibirUltimoAndamento,
  118 + exibirUnidadesAberto, exibirProcessosRelacionados, exibirProcessosAnexados, autoFormatar)).build();
  119 + }
111 120
112 - ResultadoConsultaProcesso resultado = null;  
113 -  
114 - RetornoConsultaProcedimento processoSEI = consultarProcessoSEI(unidade, processo, exibirAssuntos, exibirInteressados, exibirObservacoes, exibirAndamento, exibirAndamentoConclusao,  
115 - exibirUltimoAndamento, exibirUnidadesAberto, exibirProcessosRelacionados, exibirProcessosAnexados, autoFormatar);  
116 -  
117 - DocumentoSipar processoSIPAR = consultarProcessoSIPAR(processo); 121 + return Response.ok(consultarProcessoSEI(unidade, processo, exibirAssuntos, exibirInteressados,
  122 + exibirObservacoes, exibirAndamento, exibirAndamentoConclusao, exibirUltimoAndamento,
  123 + exibirUnidadesAberto, exibirProcessosRelacionados, exibirProcessosAnexados)).build();
  124 + }
  125 +
  126 + public ResultadoConsultaProcesso consultarProcessoANS(String unidade, String processo, String exibirAssuntos,
  127 + String exibirInteressados, String exibirObservacoes, String exibirAndamento,
  128 + String exibirAndamentoConclusao, String exibirUltimoAndamento, String exibirUnidadesAberto,
  129 + String exibirProcessosRelacionados, String exibirProcessosAnexados, String autoFormatar) throws Exception {
118 130
119 - if(processoSEI != null || processoSIPAR != null){  
120 - resultado = new ResultadoConsultaProcesso();  
121 - resultado.setSei(processoSEI);  
122 - resultado.setSipar(processoSIPAR);  
123 - }else{ 131 + ResultadoConsultaProcesso resultado = new ResultadoConsultaProcesso();
  132 +
  133 + try{
  134 + resultado.setSei(consultarProcessoSEI(unidade,
  135 + isAutoFormatar(autoFormatar) ? formatarNumeroProcesso(processo) : processo, exibirAssuntos,
  136 + exibirInteressados, exibirObservacoes, exibirAndamento, exibirAndamentoConclusao,
  137 + exibirUltimoAndamento, exibirUnidadesAberto, exibirProcessosRelacionados, exibirProcessosAnexados));
  138 +
  139 + return resultado;
  140 + }catch (AxisFault ex) {
  141 + logger.error(ex);
  142 + logger.debug(ex, ex);
  143 + }
  144 +
  145 + resultado.setSipar(consultarProcessoSIPAR(processo));
  146 +
  147 + if(resultado.getSei() == null && resultado.getSipar() == null){
124 throw new ResourceNotFoundException(messages.getMessage("erro.processo.nao.encontrado", processo)); 148 throw new ResourceNotFoundException(messages.getMessage("erro.processo.nao.encontrado", processo));
125 } 149 }
126 150
127 return resultado; 151 return resultado;
128 } 152 }
129 - 153 +
130 public RetornoConsultaProcedimento consultarProcessoSEI(String unidade, String processo, String exibirAssuntos, String exibirInteressados, 154 public RetornoConsultaProcedimento consultarProcessoSEI(String unidade, String processo, String exibirAssuntos, String exibirInteressados,
131 String exibirObservacoes, String exibirAndamento, String exibirAndamentoConclusao, String exibirUltimoAndamento, String exibirUnidadesAberto, 155 String exibirObservacoes, String exibirAndamento, String exibirAndamentoConclusao, String exibirUltimoAndamento, String exibirUnidadesAberto,
132 - String exibirProcessosRelacionados, String exibirProcessosAnexados, String autoFormatar) throws RemoteException, Exception{  
133 - if(isAutoFormatar(autoFormatar)){  
134 - processo = formatarNumeroProcesso(processo);  
135 - }  
136 -  
137 - try{  
138 - return seiNativeService.consultarProcedimento(Constantes.SIGLA_SEI_BROKER, Constantes.CHAVE_IDENTIFICACAO, unidadeResource.consultarCodigo(unidade), processo, getSOuN(exibirAssuntos),  
139 - getSOuN(exibirInteressados), getSOuN(exibirObservacoes), getSOuN(exibirAndamento), getSOuN(exibirAndamentoConclusao), getSOuN(exibirUltimoAndamento), getSOuN(exibirUnidadesAberto),  
140 - getSOuN(exibirProcessosRelacionados), getSOuN(exibirProcessosAnexados));  
141 - }catch(AxisFault ex){  
142 - logger.error(ex);  
143 - logger.debug(ex, ex);  
144 - return null;  
145 - } 156 + String exibirProcessosRelacionados, String exibirProcessosAnexados) throws RemoteException, Exception{
  157 +
  158 + return seiNativeService.consultarProcedimento(Constantes.SIGLA_SEI_BROKER, Constantes.CHAVE_IDENTIFICACAO, unidadeResource.consultarCodigo(unidade), processo, getSOuN(exibirAssuntos),
  159 + getSOuN(exibirInteressados), getSOuN(exibirObservacoes), getSOuN(exibirAndamento), getSOuN(exibirAndamentoConclusao), getSOuN(exibirUltimoAndamento), getSOuN(exibirUnidadesAberto),
  160 + getSOuN(exibirProcessosRelacionados), getSOuN(exibirProcessosAnexados));
146 } 161 }
147 - 162 +
148 public DocumentoSipar consultarProcessoSIPAR(String processo){ 163 public DocumentoSipar consultarProcessoSIPAR(String processo){
149 - String documento, ano, digito;  
150 -  
151 - try{  
152 - documento = processo.substring(0,(processo.length() - 6));  
153 - ano = processo.substring((processo.length() - 6), (processo.length() - 2));  
154 - digito = processo.substring((processo.length() - 2), processo.length());  
155 - }catch(Exception e){  
156 - logger.error(messages.getMessage("erro.numero.sipar"));  
157 - return null; 164 + DocumentoSipar documentoSipar = null;
  165 +
  166 + try {
  167 + documentoSipar = siparResource.consultarProcesso(processo);
  168 + } catch (BusinessException ex) {
  169 + logger.error(ex);
158 } 170 }
159 171
160 - return documentoSiparDAO.getDocumento(documento, ano, digito); 172 + return documentoSipar;
161 } 173 }
162 174
163 @POST 175 @POST
src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java
@@ -6,9 +6,11 @@ import java.util.Date; @@ -6,9 +6,11 @@ import java.util.Date;
6 import javax.inject.Inject; 6 import javax.inject.Inject;
7 import javax.ws.rs.Consumes; 7 import javax.ws.rs.Consumes;
8 import javax.ws.rs.DELETE; 8 import javax.ws.rs.DELETE;
  9 +import javax.ws.rs.GET;
9 import javax.ws.rs.POST; 10 import javax.ws.rs.POST;
10 import javax.ws.rs.Path; 11 import javax.ws.rs.Path;
11 import javax.ws.rs.PathParam; 12 import javax.ws.rs.PathParam;
  13 +import javax.ws.rs.Produces;
12 import javax.ws.rs.core.Context; 14 import javax.ws.rs.core.Context;
13 import javax.ws.rs.core.MediaType; 15 import javax.ws.rs.core.MediaType;
14 import javax.ws.rs.core.Response; 16 import javax.ws.rs.core.Response;
@@ -17,12 +19,13 @@ import javax.ws.rs.core.UriInfo; @@ -17,12 +19,13 @@ import javax.ws.rs.core.UriInfo;
17 19
18 import org.jboss.logging.Logger; 20 import org.jboss.logging.Logger;
19 21
20 -import br.gov.ans.integracao.sei.dao.SiparDAO;  
21 import br.gov.ans.integracao.sei.exceptions.BusinessException; 22 import br.gov.ans.integracao.sei.exceptions.BusinessException;
22 import br.gov.ans.integracao.sei.exceptions.ResourceConflictException; 23 import br.gov.ans.integracao.sei.exceptions.ResourceConflictException;
23 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException; 24 import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException;
24 -import br.gov.ans.integracao.sipar.dao.ControleMigracao;  
25 -import br.gov.ans.integracao.sipar.dao.ControleMigracaoId; 25 +import br.gov.ans.integracao.sipar.dao.SiparDAO;
  26 +import br.gov.ans.integracao.sipar.modelo.ControleMigracao;
  27 +import br.gov.ans.integracao.sipar.modelo.ControleMigracaoId;
  28 +import br.gov.ans.integracao.sipar.modelo.DocumentoSipar;
26 import br.gov.ans.utils.MessageUtils; 29 import br.gov.ans.utils.MessageUtils;
27 30
28 @Path("/sipar") 31 @Path("/sipar")
@@ -100,6 +103,35 @@ public class SiparResource { @@ -100,6 +103,35 @@ public class SiparResource {
100 103
101 } 104 }
102 105
  106 + @GET
  107 + @Path("{processo:\\d+}")
  108 + @Produces(MediaType.APPLICATION_JSON)
  109 + public DocumentoSipar consultarProcessoSIPAR(@PathParam("processo") String processo) throws BusinessException, ResourceNotFoundException{
  110 + DocumentoSipar documento = consultarProcesso(processo);
  111 +
  112 + if(documento == null){
  113 + throw new ResourceNotFoundException(messages.getMessage("erro.processo.nao.encontrado", processo));
  114 + }
  115 +
  116 + return documento;
  117 + }
  118 +
  119 + public DocumentoSipar consultarProcesso(String processo) throws BusinessException{
  120 + String numero, ano, digito;
  121 +
  122 + try{
  123 + numero = extraiNumero(processo);
  124 + ano = extraiAno(processo);
  125 + digito = extraiDigitoVerificador(processo);
  126 + }catch(Exception ex){
  127 + logger.error(ex);
  128 +
  129 + throw new BusinessException(messages.getMessage("erro.numero.sipar",processo));
  130 + }
  131 +
  132 + return dao.getDocumento(numero, ano, digito);
  133 + }
  134 +
103 private void importarProcesso(String numeroDocumento, String anoDocumento){ 135 private void importarProcesso(String numeroDocumento, String anoDocumento){
104 ControleMigracao controle = new ControleMigracao(); 136 ControleMigracao controle = new ControleMigracao();
105 controle.setId(getControleMigracaoID(numeroDocumento, anoDocumento)); 137 controle.setId(getControleMigracaoID(numeroDocumento, anoDocumento));
src/main/java/br/gov/ans/integracao/sei/utils/Constantes.java
@@ -15,10 +15,11 @@ public class Constantes { @@ -15,10 +15,11 @@ public class Constantes {
15 public static final String CHAVE_IDENTIFICACAO = "REALIZAR_INTEGRACAO"; 15 public static final String CHAVE_IDENTIFICACAO = "REALIZAR_INTEGRACAO";
16 public static final String CODIGO_BRASIL = "76"; 16 public static final String CODIGO_BRASIL = "76";
17 public static final String CODIGO_ORGAO_ANS = "0"; 17 public static final String CODIGO_ORGAO_ANS = "0";
18 - public static final String CONTENT_TYPE_HEADER_KEY= "Content-Type"; 18 + public static final String CONTENT_TYPE_HEADER_KEY= "Content-Type";
19 public static final String DATE_PATTERN = "dd/MM/yyyy"; 19 public static final String DATE_PATTERN = "dd/MM/yyyy";
20 public static final String DOCUMENTO_GERAL = "G"; 20 public static final String DOCUMENTO_GERAL = "G";
21 public static final String DOCUMENTO_RECEBIDO = "R"; 21 public static final String DOCUMENTO_RECEBIDO = "R";
  22 + public static final boolean IS_CONSULTA_SIPAR_HABILITADA = true;
22 public static final String JBOSS_HOME = System.getProperty("jboss.home.dir"); 23 public static final String JBOSS_HOME = System.getProperty("jboss.home.dir");
23 public static final String MASCARA_PROCESSO_17 = "#####.######/####-##"; 24 public static final String MASCARA_PROCESSO_17 = "#####.######/####-##";
24 public static final String MASCARA_PROCESSO_21 = "#######.########/####-##"; 25 public static final String MASCARA_PROCESSO_21 = "#######.########/####-##";
src/main/java/br/gov/ans/integracao/sipar/dao/ControleMigracao.java
@@ -1,56 +0,0 @@ @@ -1,56 +0,0 @@
1 -package br.gov.ans.integracao.sipar.dao;  
2 -  
3 -import java.io.Serializable;  
4 -import java.util.Date;  
5 -  
6 -import javax.persistence.Column;  
7 -import javax.persistence.EmbeddedId;  
8 -import javax.persistence.Entity;  
9 -import javax.persistence.Table;  
10 -import javax.persistence.Temporal;  
11 -import javax.persistence.TemporalType;  
12 -  
13 -@Entity  
14 -@Table(schema="DBPSIPAR", name="TB_CONTROLE_MIGRACAO_SIPAR_SEI")  
15 -public class ControleMigracao implements Serializable {  
16 -  
17 - private static final long serialVersionUID = 1L;  
18 -  
19 - @EmbeddedId  
20 - private ControleMigracaoId id;  
21 -  
22 - @Temporal(TemporalType.TIMESTAMP)  
23 - @Column(name = "DT_ULTIMA_ALTERACAO_CONTROLE")  
24 - private Date dataUltimaAlteracao;  
25 -  
26 - @Column(name="LG_DOCUMENTO_MIGRACAO_SEI")  
27 - private Integer migrado;  
28 -  
29 - public ControleMigracaoId getId() {  
30 - return id;  
31 - }  
32 -  
33 - public void setId(ControleMigracaoId id) {  
34 - this.id = id;  
35 - }  
36 -  
37 - public Date getDataUltimaAlteracao() {  
38 - return dataUltimaAlteracao;  
39 - }  
40 -  
41 - public void setDataUltimaAlteracao(Date dataUltimaAlteracao) {  
42 - this.dataUltimaAlteracao = dataUltimaAlteracao;  
43 - }  
44 -  
45 - public Integer getMigrado() {  
46 - return migrado;  
47 - }  
48 -  
49 - public void setMigrado(Integer migrado) {  
50 - this.migrado = migrado;  
51 - }  
52 -  
53 - public boolean isProcessoMigrado() {  
54 - return this.migrado == 1 ? true : false;  
55 - }  
56 -}  
src/main/java/br/gov/ans/integracao/sipar/dao/ControleMigracaoId.java
@@ -1,61 +0,0 @@ @@ -1,61 +0,0 @@
1 -package br.gov.ans.integracao.sipar.dao;  
2 -  
3 -import java.io.Serializable;  
4 -  
5 -import javax.persistence.Column;  
6 -import javax.persistence.Embeddable;  
7 -  
8 -@Embeddable  
9 -public class ControleMigracaoId implements Serializable {  
10 -  
11 - private static final long serialVersionUID = 1L;  
12 -  
13 - @Column(name = "CD_SEQ_DOCUMENTO")  
14 - private String numero;  
15 -  
16 - @Column(name = "NR_ANO_DOCUMENTO")  
17 - private String ano;  
18 -  
19 - public ControleMigracaoId() {  
20 - }  
21 -  
22 - public ControleMigracaoId(String numero, String ano) {  
23 - this.numero = numero;  
24 - this.ano = ano;  
25 - }  
26 -  
27 - public String getNumero() {  
28 - return numero;  
29 - }  
30 -  
31 - public void setNumero(String numero) {  
32 - this.numero = numero;  
33 - }  
34 -  
35 - public String getAno() {  
36 - return ano;  
37 - }  
38 -  
39 - public void setAno(String ano) {  
40 - this.ano = ano;  
41 - }  
42 -  
43 - @Override  
44 - public boolean equals(Object obj) {  
45 - if (obj instanceof ControleMigracaoId) {  
46 - ControleMigracaoId controleMigracao = (ControleMigracaoId) obj;  
47 - return (this.numero != null && this.numero.equals(controleMigracao.getNumero()) &&  
48 - this.ano != null && this.ano.equals(controleMigracao.getAno()));  
49 - }  
50 - return false;  
51 - }  
52 -  
53 - @Override  
54 - public int hashCode() {  
55 - final int numeroPrimo = 31;  
56 - int resultado = 1;  
57 - resultado = (numeroPrimo * resultado) + ((this.numero == null) ? 0 : this.numero.hashCode());  
58 - resultado = (numeroPrimo * resultado) + ((this.ano == null) ? 0 : this.ano.hashCode());  
59 - return resultado;  
60 - }  
61 -}  
src/main/java/br/gov/ans/integracao/sipar/dao/DocumentoSipar.java
@@ -1,131 +0,0 @@ @@ -1,131 +0,0 @@
1 -package br.gov.ans.integracao.sipar.dao;  
2 -  
3 -import java.io.Serializable;  
4 -import java.util.Date;  
5 -  
6 -import javax.persistence.Entity;  
7 -import javax.persistence.EntityResult;  
8 -import javax.persistence.FieldResult;  
9 -import javax.persistence.Id;  
10 -import javax.persistence.NamedNativeQuery;  
11 -import javax.persistence.SqlResultSetMapping;  
12 -  
13 -@Entity  
14 -@SqlResultSetMapping(name="DocumentoSiparMapping", entities={  
15 - @EntityResult(entityClass = DocumentoSipar.class,  
16 - fields = {  
17 - @FieldResult(name = "digito", column = "NU_DIGITO_DOCUMENTO"),  
18 - @FieldResult(name = "operadora", column = "CO_OPERADORA"),  
19 - @FieldResult(name = "emissao", column = "DT_EMISSAO_DOCUMENTO"),  
20 - @FieldResult(name = "registro", column = "DT_REGISTRO"),  
21 - @FieldResult(name = "tipo", column = "CO_TIPO_DOCUMENTO"),  
22 - @FieldResult(name = "resumo", column = "DS_RESUMO_DOCUMENTO"),  
23 - @FieldResult(name = "orgaoPosse", column = "CO_ORGAO_POSSE"),  
24 - @FieldResult(name = "orgaoOrigem", column = "CO_ORGAO_ORIGEM"),  
25 - @FieldResult(name = "orgaoRegistro", column = "CO_ORGAO_REGISTRO"),  
26 - @FieldResult(name = "assunto", column = "CO_ASSUNTO")  
27 - })  
28 -})  
29 -@NamedNativeQuery(name = "documentoPorNumeroAnoDigito", resultSetMapping = "DocumentoSiparMapping",  
30 -query = "SELECT TB.NU_DIGITO_DOCUMENTO, TB.CO_OPERADORA, TB.DT_EMISSAO_DOCUMENTO, TB.DT_REGISTRO, TB.CO_TIPO_DOCUMENTO, "  
31 - + "TB.DS_RESUMO_DOCUMENTO, TB.CO_ORGAO_POSSE, TB.CO_ORGAO_ORIGEM, TB.CO_ORGAO_REGISTRO, RL.CO_ASSUNTO "  
32 - + "FROM DBPSIPAR.TB_DOCUMENTO TB "  
33 - + "LEFT JOIN DBPSIPAR.RL_ASSUNTO_DOCUMENTO RL ON RL.CO_DOCUMENTO = TB.CO_SEQ_DOCUMENTO "  
34 - + "AND RL.NU_ANO_DOCUMENTO = TB.NU_ANO_DOCUMENTO "  
35 - + "WHERE TB.CO_SEQ_DOCUMENTO = :numeroDocumento "  
36 - + "AND TB.NU_ANO_DOCUMENTO = :anoDocumento "  
37 - + "AND TB.NU_DIGITO_DOCUMENTO = :digitoDocumento")  
38 -public class DocumentoSipar implements Serializable{  
39 - @Id  
40 - private String digito;  
41 - private String operadora;  
42 - private Date emissao;  
43 - private Date registro;  
44 - private String tipo;  
45 - private String resumo;  
46 - private Long orgaoPosse;  
47 - private Long orgaoOrigem;  
48 - private Long orgaoRegistro;  
49 - private Long assunto;  
50 -  
51 - public String getDigito() {  
52 - return digito;  
53 - }  
54 -  
55 - public void setDigito(String digito) {  
56 - this.digito = digito;  
57 - }  
58 -  
59 - public Long getAssunto() {  
60 - return assunto;  
61 - }  
62 -  
63 - public void setAssunto(Long assunto) {  
64 - this.assunto = assunto;  
65 - }  
66 -  
67 - public String getOperadora() {  
68 - return operadora;  
69 - }  
70 -  
71 - public void setOperadora(String operadora) {  
72 - this.operadora = operadora;  
73 - }  
74 -  
75 - public Date getEmissao() {  
76 - return emissao;  
77 - }  
78 -  
79 - public void setEmissao(Date emissao) {  
80 - this.emissao = emissao;  
81 - }  
82 -  
83 - public String getTipo() {  
84 - return tipo;  
85 - }  
86 -  
87 - public void setTipo(String tipo) {  
88 - this.tipo = tipo;  
89 - }  
90 -  
91 - public String getResumo() {  
92 - return resumo;  
93 - }  
94 -  
95 - public void setResumo(String resumo) {  
96 - this.resumo = resumo;  
97 - }  
98 -  
99 - public Long getOrgaoPosse() {  
100 - return orgaoPosse;  
101 - }  
102 -  
103 - public void setOrgaoPosse(Long orgaoPosse) {  
104 - this.orgaoPosse = orgaoPosse;  
105 - }  
106 -  
107 - public Long getOrgaoOrigem() {  
108 - return orgaoOrigem;  
109 - }  
110 -  
111 - public void setOrgaoOrigem(Long orgaoOrigem) {  
112 - this.orgaoOrigem = orgaoOrigem;  
113 - }  
114 -  
115 - public Long getOrgaoRegistro() {  
116 - return orgaoRegistro;  
117 - }  
118 -  
119 - public void setOrgaoRegistro(Long orgaoRegistro) {  
120 - this.orgaoRegistro = orgaoRegistro;  
121 - }  
122 -  
123 - public Date getRegistro() {  
124 - return registro;  
125 - }  
126 -  
127 - public void setRegistro(Date registro) {  
128 - this.registro = registro;  
129 - }  
130 -  
131 -}  
src/main/java/br/gov/ans/integracao/sipar/dao/SiparDAO.java 0 → 100644
@@ -0,0 +1,80 @@ @@ -0,0 +1,80 @@
  1 +package br.gov.ans.integracao.sipar.dao;
  2 +
  3 +import java.math.BigDecimal;
  4 +import java.util.HashMap;
  5 +import java.util.List;
  6 +import java.util.Map;
  7 +
  8 +import javax.ejb.Stateful;
  9 +import javax.inject.Inject;
  10 +import javax.persistence.EntityManager;
  11 +import javax.persistence.PersistenceContext;
  12 +import javax.persistence.PersistenceContextType;
  13 +import javax.persistence.Query;
  14 +
  15 +import br.gov.ans.dao.DAO;
  16 +import br.gov.ans.integracao.sipar.modelo.ControleMigracao;
  17 +import br.gov.ans.integracao.sipar.modelo.ControleMigracaoId;
  18 +import br.gov.ans.integracao.sipar.modelo.DocumentoSipar;
  19 +
  20 +@Stateful
  21 +public class SiparDAO {
  22 +
  23 + @PersistenceContext(unitName = "sei_broker_pu", type = PersistenceContextType.EXTENDED)
  24 + private EntityManager em;
  25 +
  26 + @SuppressWarnings("cdi-ambiguous-dependency")
  27 + @Inject
  28 + private DAO<DocumentoSipar> daoDocumento;
  29 +
  30 + @Inject
  31 + private DAO<ControleMigracao> daoMigracao;
  32 +
  33 + public DocumentoSipar getDocumento(String numeroDocumento, String anoDocumento, String digitoDocumento){
  34 +
  35 + Map<String, Object> params = new HashMap<String, Object>();
  36 + params.put("numeroDocumento", numeroDocumento);
  37 + params.put("anoDocumento", anoDocumento);
  38 + params.put("digitoDocumento", digitoDocumento);
  39 +
  40 + List<DocumentoSipar> resultado = daoDocumento.executeNamedQuery("documentoPorNumeroAnoDigito", params);
  41 +
  42 + if(resultado.isEmpty()){
  43 + return null;
  44 + }
  45 +
  46 + return resultado.get(0);
  47 + }
  48 +
  49 + public ControleMigracao buscaProcessoImportado(ControleMigracaoId id){
  50 + return daoMigracao.findById(id);
  51 + }
  52 +
  53 + public boolean isProcessoEmTramitacao(String numero, String ano){
  54 +
  55 + String sql = "SELECT count(*) FROM DBPSIPAR.TB_TRAMITACAO TR "
  56 + + "WHERE "
  57 + + "TR.DT_RECEBIMENTO IS NULL "
  58 + + "AND TR.CO_DOCUMENTO = :numero "
  59 + + "AND TR.NU_ANO_DOCUMENTO = :ano "
  60 + + "AND TR.DT_ENVIO = ("
  61 + + " SELECT MAX(TR2.DT_ENVIO) FROM DBPSIPAR.TB_TRAMITACAO TR2 WHERE TR2.CO_DOCUMENTO = :numero AND TR2.NU_ANO_DOCUMENTO = :ano"
  62 + + ")";
  63 +
  64 + Query query = em.createNativeQuery(sql);
  65 + query.setParameter("numero", numero);
  66 + query.setParameter("ano", ano);
  67 +
  68 + Long count = ((BigDecimal) query.getSingleResult()).longValue();
  69 +
  70 + if(count > 0L){
  71 + return true;
  72 + }
  73 + return false;
  74 + }
  75 +
  76 + public void merge(ControleMigracao controleMigracao){
  77 + daoMigracao.merge(controleMigracao);
  78 + }
  79 +
  80 +}
src/main/java/br/gov/ans/integracao/sipar/modelo/ControleMigracao.java 0 → 100644
@@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
  1 +package br.gov.ans.integracao.sipar.modelo;
  2 +
  3 +import java.io.Serializable;
  4 +import java.util.Date;
  5 +
  6 +import javax.persistence.Column;
  7 +import javax.persistence.EmbeddedId;
  8 +import javax.persistence.Entity;
  9 +import javax.persistence.Table;
  10 +import javax.persistence.Temporal;
  11 +import javax.persistence.TemporalType;
  12 +
  13 +@Entity
  14 +@Table(schema="DBPSIPAR", name="TB_CONTROLE_MIGRACAO_SIPAR_SEI")
  15 +public class ControleMigracao implements Serializable {
  16 +
  17 + private static final long serialVersionUID = 1L;
  18 +
  19 + @EmbeddedId
  20 + private ControleMigracaoId id;
  21 +
  22 + @Temporal(TemporalType.TIMESTAMP)
  23 + @Column(name = "DT_ULTIMA_ALTERACAO_CONTROLE")
  24 + private Date dataUltimaAlteracao;
  25 +
  26 + @Column(name="LG_DOCUMENTO_MIGRACAO_SEI")
  27 + private Integer migrado;
  28 +
  29 + public ControleMigracaoId getId() {
  30 + return id;
  31 + }
  32 +
  33 + public void setId(ControleMigracaoId id) {
  34 + this.id = id;
  35 + }
  36 +
  37 + public Date getDataUltimaAlteracao() {
  38 + return dataUltimaAlteracao;
  39 + }
  40 +
  41 + public void setDataUltimaAlteracao(Date dataUltimaAlteracao) {
  42 + this.dataUltimaAlteracao = dataUltimaAlteracao;
  43 + }
  44 +
  45 + public Integer getMigrado() {
  46 + return migrado;
  47 + }
  48 +
  49 + public void setMigrado(Integer migrado) {
  50 + this.migrado = migrado;
  51 + }
  52 +
  53 + public boolean isProcessoMigrado() {
  54 + return this.migrado == 1 ? true : false;
  55 + }
  56 +}
src/main/java/br/gov/ans/integracao/sipar/modelo/ControleMigracaoId.java 0 → 100644
@@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
  1 +package br.gov.ans.integracao.sipar.modelo;
  2 +
  3 +import java.io.Serializable;
  4 +
  5 +import javax.persistence.Column;
  6 +import javax.persistence.Embeddable;
  7 +
  8 +@Embeddable
  9 +public class ControleMigracaoId implements Serializable {
  10 +
  11 + private static final long serialVersionUID = 1L;
  12 +
  13 + @Column(name = "CD_SEQ_DOCUMENTO")
  14 + private String numero;
  15 +
  16 + @Column(name = "NR_ANO_DOCUMENTO")
  17 + private String ano;
  18 +
  19 + public ControleMigracaoId() {
  20 + }
  21 +
  22 + public ControleMigracaoId(String numero, String ano) {
  23 + this.numero = numero;
  24 + this.ano = ano;
  25 + }
  26 +
  27 + public String getNumero() {
  28 + return numero;
  29 + }
  30 +
  31 + public void setNumero(String numero) {
  32 + this.numero = numero;
  33 + }
  34 +
  35 + public String getAno() {
  36 + return ano;
  37 + }
  38 +
  39 + public void setAno(String ano) {
  40 + this.ano = ano;
  41 + }
  42 +
  43 + @Override
  44 + public boolean equals(Object obj) {
  45 + if (obj instanceof ControleMigracaoId) {
  46 + ControleMigracaoId controleMigracao = (ControleMigracaoId) obj;
  47 + return (this.numero != null && this.numero.equals(controleMigracao.getNumero()) &&
  48 + this.ano != null && this.ano.equals(controleMigracao.getAno()));
  49 + }
  50 + return false;
  51 + }
  52 +
  53 + @Override
  54 + public int hashCode() {
  55 + final int numeroPrimo = 31;
  56 + int resultado = 1;
  57 + resultado = (numeroPrimo * resultado) + ((this.numero == null) ? 0 : this.numero.hashCode());
  58 + resultado = (numeroPrimo * resultado) + ((this.ano == null) ? 0 : this.ano.hashCode());
  59 + return resultado;
  60 + }
  61 +}
src/main/java/br/gov/ans/integracao/sipar/modelo/DocumentoSipar.java 0 → 100644
@@ -0,0 +1,131 @@ @@ -0,0 +1,131 @@
  1 +package br.gov.ans.integracao.sipar.modelo;
  2 +
  3 +import java.io.Serializable;
  4 +import java.util.Date;
  5 +
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.EntityResult;
  8 +import javax.persistence.FieldResult;
  9 +import javax.persistence.Id;
  10 +import javax.persistence.NamedNativeQuery;
  11 +import javax.persistence.SqlResultSetMapping;
  12 +
  13 +@Entity
  14 +@SqlResultSetMapping(name="DocumentoSiparMapping", entities={
  15 + @EntityResult(entityClass = DocumentoSipar.class,
  16 + fields = {
  17 + @FieldResult(name = "digito", column = "NU_DIGITO_DOCUMENTO"),
  18 + @FieldResult(name = "operadora", column = "CO_OPERADORA"),
  19 + @FieldResult(name = "emissao", column = "DT_EMISSAO_DOCUMENTO"),
  20 + @FieldResult(name = "registro", column = "DT_REGISTRO"),
  21 + @FieldResult(name = "tipo", column = "CO_TIPO_DOCUMENTO"),
  22 + @FieldResult(name = "resumo", column = "DS_RESUMO_DOCUMENTO"),
  23 + @FieldResult(name = "orgaoPosse", column = "CO_ORGAO_POSSE"),
  24 + @FieldResult(name = "orgaoOrigem", column = "CO_ORGAO_ORIGEM"),
  25 + @FieldResult(name = "orgaoRegistro", column = "CO_ORGAO_REGISTRO"),
  26 + @FieldResult(name = "assunto", column = "CO_ASSUNTO")
  27 + })
  28 +})
  29 +@NamedNativeQuery(name = "documentoPorNumeroAnoDigito", resultSetMapping = "DocumentoSiparMapping",
  30 +query = "SELECT TB.NU_DIGITO_DOCUMENTO, TB.CO_OPERADORA, TB.DT_EMISSAO_DOCUMENTO, TB.DT_REGISTRO, TB.CO_TIPO_DOCUMENTO, "
  31 + + "TB.DS_RESUMO_DOCUMENTO, TB.CO_ORGAO_POSSE, TB.CO_ORGAO_ORIGEM, TB.CO_ORGAO_REGISTRO, RL.CO_ASSUNTO "
  32 + + "FROM DBPSIPAR.TB_DOCUMENTO TB "
  33 + + "LEFT JOIN DBPSIPAR.RL_ASSUNTO_DOCUMENTO RL ON RL.CO_DOCUMENTO = TB.CO_SEQ_DOCUMENTO "
  34 + + "AND RL.NU_ANO_DOCUMENTO = TB.NU_ANO_DOCUMENTO "
  35 + + "WHERE TB.CO_SEQ_DOCUMENTO = :numeroDocumento "
  36 + + "AND TB.NU_ANO_DOCUMENTO = :anoDocumento "
  37 + + "AND TB.NU_DIGITO_DOCUMENTO = :digitoDocumento")
  38 +public class DocumentoSipar implements Serializable{
  39 + @Id
  40 + private String digito;
  41 + private String operadora;
  42 + private Date emissao;
  43 + private Date registro;
  44 + private String tipo;
  45 + private String resumo;
  46 + private Long orgaoPosse;
  47 + private Long orgaoOrigem;
  48 + private Long orgaoRegistro;
  49 + private Long assunto;
  50 +
  51 + public String getDigito() {
  52 + return digito;
  53 + }
  54 +
  55 + public void setDigito(String digito) {
  56 + this.digito = digito;
  57 + }
  58 +
  59 + public Long getAssunto() {
  60 + return assunto;
  61 + }
  62 +
  63 + public void setAssunto(Long assunto) {
  64 + this.assunto = assunto;
  65 + }
  66 +
  67 + public String getOperadora() {
  68 + return operadora;
  69 + }
  70 +
  71 + public void setOperadora(String operadora) {
  72 + this.operadora = operadora;
  73 + }
  74 +
  75 + public Date getEmissao() {
  76 + return emissao;
  77 + }
  78 +
  79 + public void setEmissao(Date emissao) {
  80 + this.emissao = emissao;
  81 + }
  82 +
  83 + public String getTipo() {
  84 + return tipo;
  85 + }
  86 +
  87 + public void setTipo(String tipo) {
  88 + this.tipo = tipo;
  89 + }
  90 +
  91 + public String getResumo() {
  92 + return resumo;
  93 + }
  94 +
  95 + public void setResumo(String resumo) {
  96 + this.resumo = resumo;
  97 + }
  98 +
  99 + public Long getOrgaoPosse() {
  100 + return orgaoPosse;
  101 + }
  102 +
  103 + public void setOrgaoPosse(Long orgaoPosse) {
  104 + this.orgaoPosse = orgaoPosse;
  105 + }
  106 +
  107 + public Long getOrgaoOrigem() {
  108 + return orgaoOrigem;
  109 + }
  110 +
  111 + public void setOrgaoOrigem(Long orgaoOrigem) {
  112 + this.orgaoOrigem = orgaoOrigem;
  113 + }
  114 +
  115 + public Long getOrgaoRegistro() {
  116 + return orgaoRegistro;
  117 + }
  118 +
  119 + public void setOrgaoRegistro(Long orgaoRegistro) {
  120 + this.orgaoRegistro = orgaoRegistro;
  121 + }
  122 +
  123 + public Date getRegistro() {
  124 + return registro;
  125 + }
  126 +
  127 + public void setRegistro(Date registro) {
  128 + this.registro = registro;
  129 + }
  130 +
  131 +}
src/main/resources/META-INF/persistence.xml
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 7
8 <jta-data-source>jdbc/sei-broker</jta-data-source> 8 <jta-data-source>jdbc/sei-broker</jta-data-source>
9 9
10 - <class>br.gov.ans.integracao.sipar.dao.DocumentoSipar</class> 10 + <class>br.gov.ans.integracao.sipar.modelo.DocumentoSipar</class>
11 <class>br.gov.ans.integracao.sei.modelo.InclusaoDocumento</class> 11 <class>br.gov.ans.integracao.sei.modelo.InclusaoDocumento</class>
12 <class>br.gov.ans.modelo.LogIntegracaoSistemica</class> 12 <class>br.gov.ans.modelo.LogIntegracaoSistemica</class>
13 13