diff --git a/src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java b/src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java deleted file mode 100644 index 3a83ddf..0000000 --- a/src/main/java/br/gov/ans/integracao/sei/dao/SiparDAO.java +++ /dev/null @@ -1,80 +0,0 @@ -package br.gov.ans.integracao.sei.dao; - -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.ejb.Stateful; -import javax.inject.Inject; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.PersistenceContextType; -import javax.persistence.Query; - -import br.gov.ans.dao.DAO; -import br.gov.ans.integracao.sipar.dao.ControleMigracao; -import br.gov.ans.integracao.sipar.dao.ControleMigracaoId; -import br.gov.ans.integracao.sipar.dao.DocumentoSipar; - -@Stateful -public class SiparDAO { - - @PersistenceContext(unitName = "sei_broker_pu", type = PersistenceContextType.EXTENDED) - private EntityManager em; - - @SuppressWarnings("cdi-ambiguous-dependency") - @Inject - private DAO daoDocumento; - - @Inject - private DAO daoMigracao; - - public DocumentoSipar getDocumento(String numeroDocumento, String anoDocumento, String digitoDocumento){ - - Map params = new HashMap(); - params.put("numeroDocumento", numeroDocumento); - params.put("anoDocumento", anoDocumento); - params.put("digitoDocumento", digitoDocumento); - - List resultado = daoDocumento.executeNamedQuery("documentoPorNumeroAnoDigito", params); - - if(resultado.isEmpty()){ - return null; - } - - return resultado.get(0); - } - - public ControleMigracao buscaProcessoImportado(ControleMigracaoId id){ - return daoMigracao.findById(id); - } - - public boolean isProcessoEmTramitacao(String numero, String ano){ - - String sql = "SELECT count(*) FROM DBPSIPAR.TB_TRAMITACAO TR " - + "WHERE " - + "TR.DT_RECEBIMENTO IS NULL " - + "AND TR.CO_DOCUMENTO = :numero " - + "AND TR.NU_ANO_DOCUMENTO = :ano " - + "AND TR.DT_ENVIO = (" - + " SELECT MAX(TR2.DT_ENVIO) FROM DBPSIPAR.TB_TRAMITACAO TR2 WHERE TR2.CO_DOCUMENTO = :numero AND TR2.NU_ANO_DOCUMENTO = :ano" - + ")"; - - Query query = em.createNativeQuery(sql); - query.setParameter("numero", numero); - query.setParameter("ano", ano); - - Long count = ((BigDecimal) query.getSingleResult()).longValue(); - - if(count > 0L){ - return true; - } - return false; - } - - public void merge(ControleMigracao controleMigracao){ - daoMigracao.merge(controleMigracao); - } - -} diff --git a/src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaDocumento.java b/src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaDocumento.java index 752f1e3..3fe1897 100644 --- a/src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaDocumento.java +++ b/src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaDocumento.java @@ -6,7 +6,7 @@ import org.codehaus.jackson.annotate.JsonIgnoreProperties; import org.codehaus.jackson.map.annotate.JsonSerialize; import br.gov.ans.integracao.sei.client.RetornoConsultaDocumento; -import br.gov.ans.integracao.sipar.dao.DocumentoSipar; +import br.gov.ans.integracao.sipar.modelo.DocumentoSipar; @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) diff --git a/src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaProcesso.java b/src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaProcesso.java index b3d36d4..5a6e1a7 100644 --- a/src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaProcesso.java +++ b/src/main/java/br/gov/ans/integracao/sei/modelo/ResultadoConsultaProcesso.java @@ -6,7 +6,7 @@ import org.codehaus.jackson.annotate.JsonIgnoreProperties; import org.codehaus.jackson.map.annotate.JsonSerialize; import br.gov.ans.integracao.sei.client.RetornoConsultaProcedimento; -import br.gov.ans.integracao.sipar.dao.DocumentoSipar; +import br.gov.ans.integracao.sipar.modelo.DocumentoSipar; @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) diff --git a/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java b/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java index 773e30a..ec63f48 100644 --- a/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java +++ b/src/main/java/br/gov/ans/integracao/sei/rest/ProcessoResource.java @@ -46,7 +46,6 @@ import br.gov.ans.integracao.sei.client.TipoProcedimento; import br.gov.ans.integracao.sei.client.Unidade; import br.gov.ans.integracao.sei.dao.DocumentoDAO; import br.gov.ans.integracao.sei.dao.ProcessoDAO; -import br.gov.ans.integracao.sei.dao.SiparDAO; import br.gov.ans.integracao.sei.dao.UnidadeDAO; import br.gov.ans.integracao.sei.exceptions.BusinessException; import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException; @@ -63,15 +62,12 @@ import br.gov.ans.integracao.sei.modelo.ProcessoResumido; import br.gov.ans.integracao.sei.modelo.ResultadoConsultaProcesso; import br.gov.ans.integracao.sei.modelo.SobrestamentoProcesso; import br.gov.ans.integracao.sei.utils.Constantes; -import br.gov.ans.integracao.sipar.dao.DocumentoSipar; +import br.gov.ans.integracao.sipar.modelo.DocumentoSipar; import br.gov.ans.utils.MessageUtils; @Path("") public class ProcessoResource { - - @Inject - private SiparDAO documentoSiparDAO; @Inject private ProcessoDAO processoDAO; @@ -87,7 +83,10 @@ public class ProcessoResource { @Inject private UnidadeResource unidadeResource; - + + @Inject + private SiparResource siparResource; + @Inject private MessageUtils messages; @@ -103,61 +102,74 @@ public class ProcessoResource { @GET @Path("{unidade}/processos/{processo:\\d+}") @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) - public ResultadoConsultaProcesso consultarProcesso(@PathParam("unidade") String unidade, @PathParam("processo") String processo, - @QueryParam("assuntos") String exibirAssuntos, @QueryParam("interessados") String exibirInteressados, @QueryParam("observacoes") String exibirObservacoes, - @QueryParam("andamento") String exibirAndamento, @QueryParam("andamento-conclusao") String exibirAndamentoConclusao, @QueryParam("ultimo-andamento") String exibirUltimoAndamento, - @QueryParam("unidades") String exibirUnidadesAberto, @QueryParam("relacionados") String exibirProcessosRelacionados, @QueryParam("anexados") String exibirProcessosAnexados, - @QueryParam("auto-formatacao") String autoFormatar) throws Exception{ + public Response ConsultarProcessoV2(@PathParam("unidade") String unidade, @PathParam("processo") String processo, + @QueryParam("assuntos") String exibirAssuntos, @QueryParam("interessados") String exibirInteressados, + @QueryParam("observacoes") String exibirObservacoes, @QueryParam("andamento") String exibirAndamento, + @QueryParam("andamento-conclusao") String exibirAndamentoConclusao, + @QueryParam("ultimo-andamento") String exibirUltimoAndamento, + @QueryParam("unidades") String exibirUnidadesAberto, + @QueryParam("relacionados") String exibirProcessosRelacionados, + @QueryParam("anexados") String exibirProcessosAnexados, + @QueryParam("auto-formatacao") String autoFormatar) throws RemoteException, Exception { + + if (Constantes.IS_CONSULTA_SIPAR_HABILITADA) { + return Response.ok(consultarProcessoANS(unidade, processo, exibirAssuntos, exibirInteressados, + exibirObservacoes, exibirAndamento, exibirAndamentoConclusao, exibirUltimoAndamento, + exibirUnidadesAberto, exibirProcessosRelacionados, exibirProcessosAnexados, autoFormatar)).build(); + } - ResultadoConsultaProcesso resultado = null; - - RetornoConsultaProcedimento processoSEI = consultarProcessoSEI(unidade, processo, exibirAssuntos, exibirInteressados, exibirObservacoes, exibirAndamento, exibirAndamentoConclusao, - exibirUltimoAndamento, exibirUnidadesAberto, exibirProcessosRelacionados, exibirProcessosAnexados, autoFormatar); - - DocumentoSipar processoSIPAR = consultarProcessoSIPAR(processo); + return Response.ok(consultarProcessoSEI(unidade, processo, exibirAssuntos, exibirInteressados, + exibirObservacoes, exibirAndamento, exibirAndamentoConclusao, exibirUltimoAndamento, + exibirUnidadesAberto, exibirProcessosRelacionados, exibirProcessosAnexados)).build(); + } + + public ResultadoConsultaProcesso consultarProcessoANS(String unidade, String processo, String exibirAssuntos, + String exibirInteressados, String exibirObservacoes, String exibirAndamento, + String exibirAndamentoConclusao, String exibirUltimoAndamento, String exibirUnidadesAberto, + String exibirProcessosRelacionados, String exibirProcessosAnexados, String autoFormatar) throws Exception { - if(processoSEI != null || processoSIPAR != null){ - resultado = new ResultadoConsultaProcesso(); - resultado.setSei(processoSEI); - resultado.setSipar(processoSIPAR); - }else{ + ResultadoConsultaProcesso resultado = new ResultadoConsultaProcesso(); + + try{ + resultado.setSei(consultarProcessoSEI(unidade, + isAutoFormatar(autoFormatar) ? formatarNumeroProcesso(processo) : processo, exibirAssuntos, + exibirInteressados, exibirObservacoes, exibirAndamento, exibirAndamentoConclusao, + exibirUltimoAndamento, exibirUnidadesAberto, exibirProcessosRelacionados, exibirProcessosAnexados)); + + return resultado; + }catch (AxisFault ex) { + logger.error(ex); + logger.debug(ex, ex); + } + + resultado.setSipar(consultarProcessoSIPAR(processo)); + + if(resultado.getSei() == null && resultado.getSipar() == null){ throw new ResourceNotFoundException(messages.getMessage("erro.processo.nao.encontrado", processo)); } return resultado; } - + public RetornoConsultaProcedimento consultarProcessoSEI(String unidade, String processo, String exibirAssuntos, String exibirInteressados, String exibirObservacoes, String exibirAndamento, String exibirAndamentoConclusao, String exibirUltimoAndamento, String exibirUnidadesAberto, - String exibirProcessosRelacionados, String exibirProcessosAnexados, String autoFormatar) throws RemoteException, Exception{ - if(isAutoFormatar(autoFormatar)){ - processo = formatarNumeroProcesso(processo); - } - - try{ - return seiNativeService.consultarProcedimento(Constantes.SIGLA_SEI_BROKER, Constantes.CHAVE_IDENTIFICACAO, unidadeResource.consultarCodigo(unidade), processo, getSOuN(exibirAssuntos), - getSOuN(exibirInteressados), getSOuN(exibirObservacoes), getSOuN(exibirAndamento), getSOuN(exibirAndamentoConclusao), getSOuN(exibirUltimoAndamento), getSOuN(exibirUnidadesAberto), - getSOuN(exibirProcessosRelacionados), getSOuN(exibirProcessosAnexados)); - }catch(AxisFault ex){ - logger.error(ex); - logger.debug(ex, ex); - return null; - } + String exibirProcessosRelacionados, String exibirProcessosAnexados) throws RemoteException, Exception{ + + return seiNativeService.consultarProcedimento(Constantes.SIGLA_SEI_BROKER, Constantes.CHAVE_IDENTIFICACAO, unidadeResource.consultarCodigo(unidade), processo, getSOuN(exibirAssuntos), + getSOuN(exibirInteressados), getSOuN(exibirObservacoes), getSOuN(exibirAndamento), getSOuN(exibirAndamentoConclusao), getSOuN(exibirUltimoAndamento), getSOuN(exibirUnidadesAberto), + getSOuN(exibirProcessosRelacionados), getSOuN(exibirProcessosAnexados)); } - + public DocumentoSipar consultarProcessoSIPAR(String processo){ - String documento, ano, digito; - - try{ - documento = processo.substring(0,(processo.length() - 6)); - ano = processo.substring((processo.length() - 6), (processo.length() - 2)); - digito = processo.substring((processo.length() - 2), processo.length()); - }catch(Exception e){ - logger.error(messages.getMessage("erro.numero.sipar")); - return null; + DocumentoSipar documentoSipar = null; + + try { + documentoSipar = siparResource.consultarProcesso(processo); + } catch (BusinessException ex) { + logger.error(ex); } - return documentoSiparDAO.getDocumento(documento, ano, digito); + return documentoSipar; } @POST diff --git a/src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java b/src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java index c1a4048..5c3bd00 100644 --- a/src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java +++ b/src/main/java/br/gov/ans/integracao/sei/rest/SiparResource.java @@ -6,9 +6,11 @@ import java.util.Date; import javax.inject.Inject; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; +import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @@ -17,12 +19,13 @@ import javax.ws.rs.core.UriInfo; import org.jboss.logging.Logger; -import br.gov.ans.integracao.sei.dao.SiparDAO; import br.gov.ans.integracao.sei.exceptions.BusinessException; import br.gov.ans.integracao.sei.exceptions.ResourceConflictException; import br.gov.ans.integracao.sei.exceptions.ResourceNotFoundException; -import br.gov.ans.integracao.sipar.dao.ControleMigracao; -import br.gov.ans.integracao.sipar.dao.ControleMigracaoId; +import br.gov.ans.integracao.sipar.dao.SiparDAO; +import br.gov.ans.integracao.sipar.modelo.ControleMigracao; +import br.gov.ans.integracao.sipar.modelo.ControleMigracaoId; +import br.gov.ans.integracao.sipar.modelo.DocumentoSipar; import br.gov.ans.utils.MessageUtils; @Path("/sipar") @@ -100,6 +103,35 @@ public class SiparResource { } + @GET + @Path("{processo:\\d+}") + @Produces(MediaType.APPLICATION_JSON) + public DocumentoSipar consultarProcessoSIPAR(@PathParam("processo") String processo) throws BusinessException, ResourceNotFoundException{ + DocumentoSipar documento = consultarProcesso(processo); + + if(documento == null){ + throw new ResourceNotFoundException(messages.getMessage("erro.processo.nao.encontrado", processo)); + } + + return documento; + } + + public DocumentoSipar consultarProcesso(String processo) throws BusinessException{ + String numero, ano, digito; + + try{ + numero = extraiNumero(processo); + ano = extraiAno(processo); + digito = extraiDigitoVerificador(processo); + }catch(Exception ex){ + logger.error(ex); + + throw new BusinessException(messages.getMessage("erro.numero.sipar",processo)); + } + + return dao.getDocumento(numero, ano, digito); + } + private void importarProcesso(String numeroDocumento, String anoDocumento){ ControleMigracao controle = new ControleMigracao(); controle.setId(getControleMigracaoID(numeroDocumento, anoDocumento)); diff --git a/src/main/java/br/gov/ans/integracao/sei/utils/Constantes.java b/src/main/java/br/gov/ans/integracao/sei/utils/Constantes.java index 1dd58b4..da176d3 100644 --- a/src/main/java/br/gov/ans/integracao/sei/utils/Constantes.java +++ b/src/main/java/br/gov/ans/integracao/sei/utils/Constantes.java @@ -15,10 +15,11 @@ public class Constantes { public static final String CHAVE_IDENTIFICACAO = "REALIZAR_INTEGRACAO"; public static final String CODIGO_BRASIL = "76"; public static final String CODIGO_ORGAO_ANS = "0"; - public static final String CONTENT_TYPE_HEADER_KEY= "Content-Type"; + public static final String CONTENT_TYPE_HEADER_KEY= "Content-Type"; public static final String DATE_PATTERN = "dd/MM/yyyy"; public static final String DOCUMENTO_GERAL = "G"; public static final String DOCUMENTO_RECEBIDO = "R"; + public static final boolean IS_CONSULTA_SIPAR_HABILITADA = true; public static final String JBOSS_HOME = System.getProperty("jboss.home.dir"); public static final String MASCARA_PROCESSO_17 = "#####.######/####-##"; public static final String MASCARA_PROCESSO_21 = "#######.########/####-##"; diff --git a/src/main/java/br/gov/ans/integracao/sipar/dao/ControleMigracao.java b/src/main/java/br/gov/ans/integracao/sipar/dao/ControleMigracao.java deleted file mode 100644 index 2c57e47..0000000 --- a/src/main/java/br/gov/ans/integracao/sipar/dao/ControleMigracao.java +++ /dev/null @@ -1,56 +0,0 @@ -package br.gov.ans.integracao.sipar.dao; - -import java.io.Serializable; -import java.util.Date; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; - -@Entity -@Table(schema="DBPSIPAR", name="TB_CONTROLE_MIGRACAO_SIPAR_SEI") -public class ControleMigracao implements Serializable { - - private static final long serialVersionUID = 1L; - - @EmbeddedId - private ControleMigracaoId id; - - @Temporal(TemporalType.TIMESTAMP) - @Column(name = "DT_ULTIMA_ALTERACAO_CONTROLE") - private Date dataUltimaAlteracao; - - @Column(name="LG_DOCUMENTO_MIGRACAO_SEI") - private Integer migrado; - - public ControleMigracaoId getId() { - return id; - } - - public void setId(ControleMigracaoId id) { - this.id = id; - } - - public Date getDataUltimaAlteracao() { - return dataUltimaAlteracao; - } - - public void setDataUltimaAlteracao(Date dataUltimaAlteracao) { - this.dataUltimaAlteracao = dataUltimaAlteracao; - } - - public Integer getMigrado() { - return migrado; - } - - public void setMigrado(Integer migrado) { - this.migrado = migrado; - } - - public boolean isProcessoMigrado() { - return this.migrado == 1 ? true : false; - } -} diff --git a/src/main/java/br/gov/ans/integracao/sipar/dao/ControleMigracaoId.java b/src/main/java/br/gov/ans/integracao/sipar/dao/ControleMigracaoId.java deleted file mode 100644 index 15c71a7..0000000 --- a/src/main/java/br/gov/ans/integracao/sipar/dao/ControleMigracaoId.java +++ /dev/null @@ -1,61 +0,0 @@ -package br.gov.ans.integracao.sipar.dao; - -import java.io.Serializable; - -import javax.persistence.Column; -import javax.persistence.Embeddable; - -@Embeddable -public class ControleMigracaoId implements Serializable { - - private static final long serialVersionUID = 1L; - - @Column(name = "CD_SEQ_DOCUMENTO") - private String numero; - - @Column(name = "NR_ANO_DOCUMENTO") - private String ano; - - public ControleMigracaoId() { - } - - public ControleMigracaoId(String numero, String ano) { - this.numero = numero; - this.ano = ano; - } - - public String getNumero() { - return numero; - } - - public void setNumero(String numero) { - this.numero = numero; - } - - public String getAno() { - return ano; - } - - public void setAno(String ano) { - this.ano = ano; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof ControleMigracaoId) { - ControleMigracaoId controleMigracao = (ControleMigracaoId) obj; - return (this.numero != null && this.numero.equals(controleMigracao.getNumero()) && - this.ano != null && this.ano.equals(controleMigracao.getAno())); - } - return false; - } - - @Override - public int hashCode() { - final int numeroPrimo = 31; - int resultado = 1; - resultado = (numeroPrimo * resultado) + ((this.numero == null) ? 0 : this.numero.hashCode()); - resultado = (numeroPrimo * resultado) + ((this.ano == null) ? 0 : this.ano.hashCode()); - return resultado; - } -} diff --git a/src/main/java/br/gov/ans/integracao/sipar/dao/DocumentoSipar.java b/src/main/java/br/gov/ans/integracao/sipar/dao/DocumentoSipar.java deleted file mode 100644 index d04b4b2..0000000 --- a/src/main/java/br/gov/ans/integracao/sipar/dao/DocumentoSipar.java +++ /dev/null @@ -1,131 +0,0 @@ -package br.gov.ans.integracao.sipar.dao; - -import java.io.Serializable; -import java.util.Date; - -import javax.persistence.Entity; -import javax.persistence.EntityResult; -import javax.persistence.FieldResult; -import javax.persistence.Id; -import javax.persistence.NamedNativeQuery; -import javax.persistence.SqlResultSetMapping; - -@Entity -@SqlResultSetMapping(name="DocumentoSiparMapping", entities={ - @EntityResult(entityClass = DocumentoSipar.class, - fields = { - @FieldResult(name = "digito", column = "NU_DIGITO_DOCUMENTO"), - @FieldResult(name = "operadora", column = "CO_OPERADORA"), - @FieldResult(name = "emissao", column = "DT_EMISSAO_DOCUMENTO"), - @FieldResult(name = "registro", column = "DT_REGISTRO"), - @FieldResult(name = "tipo", column = "CO_TIPO_DOCUMENTO"), - @FieldResult(name = "resumo", column = "DS_RESUMO_DOCUMENTO"), - @FieldResult(name = "orgaoPosse", column = "CO_ORGAO_POSSE"), - @FieldResult(name = "orgaoOrigem", column = "CO_ORGAO_ORIGEM"), - @FieldResult(name = "orgaoRegistro", column = "CO_ORGAO_REGISTRO"), - @FieldResult(name = "assunto", column = "CO_ASSUNTO") - }) -}) -@NamedNativeQuery(name = "documentoPorNumeroAnoDigito", resultSetMapping = "DocumentoSiparMapping", -query = "SELECT TB.NU_DIGITO_DOCUMENTO, TB.CO_OPERADORA, TB.DT_EMISSAO_DOCUMENTO, TB.DT_REGISTRO, TB.CO_TIPO_DOCUMENTO, " - + "TB.DS_RESUMO_DOCUMENTO, TB.CO_ORGAO_POSSE, TB.CO_ORGAO_ORIGEM, TB.CO_ORGAO_REGISTRO, RL.CO_ASSUNTO " - + "FROM DBPSIPAR.TB_DOCUMENTO TB " - + "LEFT JOIN DBPSIPAR.RL_ASSUNTO_DOCUMENTO RL ON RL.CO_DOCUMENTO = TB.CO_SEQ_DOCUMENTO " - + "AND RL.NU_ANO_DOCUMENTO = TB.NU_ANO_DOCUMENTO " - + "WHERE TB.CO_SEQ_DOCUMENTO = :numeroDocumento " - + "AND TB.NU_ANO_DOCUMENTO = :anoDocumento " - + "AND TB.NU_DIGITO_DOCUMENTO = :digitoDocumento") -public class DocumentoSipar implements Serializable{ - @Id - private String digito; - private String operadora; - private Date emissao; - private Date registro; - private String tipo; - private String resumo; - private Long orgaoPosse; - private Long orgaoOrigem; - private Long orgaoRegistro; - private Long assunto; - - public String getDigito() { - return digito; - } - - public void setDigito(String digito) { - this.digito = digito; - } - - public Long getAssunto() { - return assunto; - } - - public void setAssunto(Long assunto) { - this.assunto = assunto; - } - - public String getOperadora() { - return operadora; - } - - public void setOperadora(String operadora) { - this.operadora = operadora; - } - - public Date getEmissao() { - return emissao; - } - - public void setEmissao(Date emissao) { - this.emissao = emissao; - } - - public String getTipo() { - return tipo; - } - - public void setTipo(String tipo) { - this.tipo = tipo; - } - - public String getResumo() { - return resumo; - } - - public void setResumo(String resumo) { - this.resumo = resumo; - } - - public Long getOrgaoPosse() { - return orgaoPosse; - } - - public void setOrgaoPosse(Long orgaoPosse) { - this.orgaoPosse = orgaoPosse; - } - - public Long getOrgaoOrigem() { - return orgaoOrigem; - } - - public void setOrgaoOrigem(Long orgaoOrigem) { - this.orgaoOrigem = orgaoOrigem; - } - - public Long getOrgaoRegistro() { - return orgaoRegistro; - } - - public void setOrgaoRegistro(Long orgaoRegistro) { - this.orgaoRegistro = orgaoRegistro; - } - - public Date getRegistro() { - return registro; - } - - public void setRegistro(Date registro) { - this.registro = registro; - } - -} diff --git a/src/main/java/br/gov/ans/integracao/sipar/dao/SiparDAO.java b/src/main/java/br/gov/ans/integracao/sipar/dao/SiparDAO.java new file mode 100644 index 0000000..d23d66b --- /dev/null +++ b/src/main/java/br/gov/ans/integracao/sipar/dao/SiparDAO.java @@ -0,0 +1,80 @@ +package br.gov.ans.integracao.sipar.dao; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.ejb.Stateful; +import javax.inject.Inject; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.PersistenceContextType; +import javax.persistence.Query; + +import br.gov.ans.dao.DAO; +import br.gov.ans.integracao.sipar.modelo.ControleMigracao; +import br.gov.ans.integracao.sipar.modelo.ControleMigracaoId; +import br.gov.ans.integracao.sipar.modelo.DocumentoSipar; + +@Stateful +public class SiparDAO { + + @PersistenceContext(unitName = "sei_broker_pu", type = PersistenceContextType.EXTENDED) + private EntityManager em; + + @SuppressWarnings("cdi-ambiguous-dependency") + @Inject + private DAO daoDocumento; + + @Inject + private DAO daoMigracao; + + public DocumentoSipar getDocumento(String numeroDocumento, String anoDocumento, String digitoDocumento){ + + Map params = new HashMap(); + params.put("numeroDocumento", numeroDocumento); + params.put("anoDocumento", anoDocumento); + params.put("digitoDocumento", digitoDocumento); + + List resultado = daoDocumento.executeNamedQuery("documentoPorNumeroAnoDigito", params); + + if(resultado.isEmpty()){ + return null; + } + + return resultado.get(0); + } + + public ControleMigracao buscaProcessoImportado(ControleMigracaoId id){ + return daoMigracao.findById(id); + } + + public boolean isProcessoEmTramitacao(String numero, String ano){ + + String sql = "SELECT count(*) FROM DBPSIPAR.TB_TRAMITACAO TR " + + "WHERE " + + "TR.DT_RECEBIMENTO IS NULL " + + "AND TR.CO_DOCUMENTO = :numero " + + "AND TR.NU_ANO_DOCUMENTO = :ano " + + "AND TR.DT_ENVIO = (" + + " SELECT MAX(TR2.DT_ENVIO) FROM DBPSIPAR.TB_TRAMITACAO TR2 WHERE TR2.CO_DOCUMENTO = :numero AND TR2.NU_ANO_DOCUMENTO = :ano" + + ")"; + + Query query = em.createNativeQuery(sql); + query.setParameter("numero", numero); + query.setParameter("ano", ano); + + Long count = ((BigDecimal) query.getSingleResult()).longValue(); + + if(count > 0L){ + return true; + } + return false; + } + + public void merge(ControleMigracao controleMigracao){ + daoMigracao.merge(controleMigracao); + } + +} diff --git a/src/main/java/br/gov/ans/integracao/sipar/modelo/ControleMigracao.java b/src/main/java/br/gov/ans/integracao/sipar/modelo/ControleMigracao.java new file mode 100644 index 0000000..06a0075 --- /dev/null +++ b/src/main/java/br/gov/ans/integracao/sipar/modelo/ControleMigracao.java @@ -0,0 +1,56 @@ +package br.gov.ans.integracao.sipar.modelo; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +@Entity +@Table(schema="DBPSIPAR", name="TB_CONTROLE_MIGRACAO_SIPAR_SEI") +public class ControleMigracao implements Serializable { + + private static final long serialVersionUID = 1L; + + @EmbeddedId + private ControleMigracaoId id; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "DT_ULTIMA_ALTERACAO_CONTROLE") + private Date dataUltimaAlteracao; + + @Column(name="LG_DOCUMENTO_MIGRACAO_SEI") + private Integer migrado; + + public ControleMigracaoId getId() { + return id; + } + + public void setId(ControleMigracaoId id) { + this.id = id; + } + + public Date getDataUltimaAlteracao() { + return dataUltimaAlteracao; + } + + public void setDataUltimaAlteracao(Date dataUltimaAlteracao) { + this.dataUltimaAlteracao = dataUltimaAlteracao; + } + + public Integer getMigrado() { + return migrado; + } + + public void setMigrado(Integer migrado) { + this.migrado = migrado; + } + + public boolean isProcessoMigrado() { + return this.migrado == 1 ? true : false; + } +} diff --git a/src/main/java/br/gov/ans/integracao/sipar/modelo/ControleMigracaoId.java b/src/main/java/br/gov/ans/integracao/sipar/modelo/ControleMigracaoId.java new file mode 100644 index 0000000..ff2b4aa --- /dev/null +++ b/src/main/java/br/gov/ans/integracao/sipar/modelo/ControleMigracaoId.java @@ -0,0 +1,61 @@ +package br.gov.ans.integracao.sipar.modelo; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Embeddable; + +@Embeddable +public class ControleMigracaoId implements Serializable { + + private static final long serialVersionUID = 1L; + + @Column(name = "CD_SEQ_DOCUMENTO") + private String numero; + + @Column(name = "NR_ANO_DOCUMENTO") + private String ano; + + public ControleMigracaoId() { + } + + public ControleMigracaoId(String numero, String ano) { + this.numero = numero; + this.ano = ano; + } + + public String getNumero() { + return numero; + } + + public void setNumero(String numero) { + this.numero = numero; + } + + public String getAno() { + return ano; + } + + public void setAno(String ano) { + this.ano = ano; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof ControleMigracaoId) { + ControleMigracaoId controleMigracao = (ControleMigracaoId) obj; + return (this.numero != null && this.numero.equals(controleMigracao.getNumero()) && + this.ano != null && this.ano.equals(controleMigracao.getAno())); + } + return false; + } + + @Override + public int hashCode() { + final int numeroPrimo = 31; + int resultado = 1; + resultado = (numeroPrimo * resultado) + ((this.numero == null) ? 0 : this.numero.hashCode()); + resultado = (numeroPrimo * resultado) + ((this.ano == null) ? 0 : this.ano.hashCode()); + return resultado; + } +} diff --git a/src/main/java/br/gov/ans/integracao/sipar/modelo/DocumentoSipar.java b/src/main/java/br/gov/ans/integracao/sipar/modelo/DocumentoSipar.java new file mode 100644 index 0000000..76c8b4e --- /dev/null +++ b/src/main/java/br/gov/ans/integracao/sipar/modelo/DocumentoSipar.java @@ -0,0 +1,131 @@ +package br.gov.ans.integracao.sipar.modelo; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.EntityResult; +import javax.persistence.FieldResult; +import javax.persistence.Id; +import javax.persistence.NamedNativeQuery; +import javax.persistence.SqlResultSetMapping; + +@Entity +@SqlResultSetMapping(name="DocumentoSiparMapping", entities={ + @EntityResult(entityClass = DocumentoSipar.class, + fields = { + @FieldResult(name = "digito", column = "NU_DIGITO_DOCUMENTO"), + @FieldResult(name = "operadora", column = "CO_OPERADORA"), + @FieldResult(name = "emissao", column = "DT_EMISSAO_DOCUMENTO"), + @FieldResult(name = "registro", column = "DT_REGISTRO"), + @FieldResult(name = "tipo", column = "CO_TIPO_DOCUMENTO"), + @FieldResult(name = "resumo", column = "DS_RESUMO_DOCUMENTO"), + @FieldResult(name = "orgaoPosse", column = "CO_ORGAO_POSSE"), + @FieldResult(name = "orgaoOrigem", column = "CO_ORGAO_ORIGEM"), + @FieldResult(name = "orgaoRegistro", column = "CO_ORGAO_REGISTRO"), + @FieldResult(name = "assunto", column = "CO_ASSUNTO") + }) +}) +@NamedNativeQuery(name = "documentoPorNumeroAnoDigito", resultSetMapping = "DocumentoSiparMapping", +query = "SELECT TB.NU_DIGITO_DOCUMENTO, TB.CO_OPERADORA, TB.DT_EMISSAO_DOCUMENTO, TB.DT_REGISTRO, TB.CO_TIPO_DOCUMENTO, " + + "TB.DS_RESUMO_DOCUMENTO, TB.CO_ORGAO_POSSE, TB.CO_ORGAO_ORIGEM, TB.CO_ORGAO_REGISTRO, RL.CO_ASSUNTO " + + "FROM DBPSIPAR.TB_DOCUMENTO TB " + + "LEFT JOIN DBPSIPAR.RL_ASSUNTO_DOCUMENTO RL ON RL.CO_DOCUMENTO = TB.CO_SEQ_DOCUMENTO " + + "AND RL.NU_ANO_DOCUMENTO = TB.NU_ANO_DOCUMENTO " + + "WHERE TB.CO_SEQ_DOCUMENTO = :numeroDocumento " + + "AND TB.NU_ANO_DOCUMENTO = :anoDocumento " + + "AND TB.NU_DIGITO_DOCUMENTO = :digitoDocumento") +public class DocumentoSipar implements Serializable{ + @Id + private String digito; + private String operadora; + private Date emissao; + private Date registro; + private String tipo; + private String resumo; + private Long orgaoPosse; + private Long orgaoOrigem; + private Long orgaoRegistro; + private Long assunto; + + public String getDigito() { + return digito; + } + + public void setDigito(String digito) { + this.digito = digito; + } + + public Long getAssunto() { + return assunto; + } + + public void setAssunto(Long assunto) { + this.assunto = assunto; + } + + public String getOperadora() { + return operadora; + } + + public void setOperadora(String operadora) { + this.operadora = operadora; + } + + public Date getEmissao() { + return emissao; + } + + public void setEmissao(Date emissao) { + this.emissao = emissao; + } + + public String getTipo() { + return tipo; + } + + public void setTipo(String tipo) { + this.tipo = tipo; + } + + public String getResumo() { + return resumo; + } + + public void setResumo(String resumo) { + this.resumo = resumo; + } + + public Long getOrgaoPosse() { + return orgaoPosse; + } + + public void setOrgaoPosse(Long orgaoPosse) { + this.orgaoPosse = orgaoPosse; + } + + public Long getOrgaoOrigem() { + return orgaoOrigem; + } + + public void setOrgaoOrigem(Long orgaoOrigem) { + this.orgaoOrigem = orgaoOrigem; + } + + public Long getOrgaoRegistro() { + return orgaoRegistro; + } + + public void setOrgaoRegistro(Long orgaoRegistro) { + this.orgaoRegistro = orgaoRegistro; + } + + public Date getRegistro() { + return registro; + } + + public void setRegistro(Date registro) { + this.registro = registro; + } + +} diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index a17af4b..e7a9641 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -7,7 +7,7 @@ jdbc/sei-broker - br.gov.ans.integracao.sipar.dao.DocumentoSipar + br.gov.ans.integracao.sipar.modelo.DocumentoSipar br.gov.ans.integracao.sei.modelo.InclusaoDocumento br.gov.ans.modelo.LogIntegracaoSistemica -- libgit2 0.21.2