Skip to content

Commit

Permalink
Adiciona filtro por espécie no historico de movimentações
Browse files Browse the repository at this point in the history
  • Loading branch information
cassioaugusto01 committed Dec 21, 2023
1 parent 9f61216 commit 9695dda
Show file tree
Hide file tree
Showing 8 changed files with 549 additions and 18 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
package br.gov.jfrj.siga.ex.api.v1;

import br.gov.jfrj.siga.base.AplicacaoException;
import br.gov.jfrj.siga.base.Prop;
import br.gov.jfrj.siga.context.AcessoPublico;
import br.gov.jfrj.siga.ex.ExDocumento;
import br.gov.jfrj.siga.ex.ExMobil;
import br.gov.jfrj.siga.ex.ExMovimentacao;
import br.gov.jfrj.siga.ex.model.enm.ExTipoDeMovimentacao;
import br.gov.jfrj.siga.hibernate.ExDao;
import br.gov.jfrj.siga.persistencia.ExMobilDaoFiltro;
import com.crivano.swaggerservlet.SwaggerServlet;

import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
import java.util.Set;

@AcessoPublico
public class DocumentosIdConsultarEspecieGet implements IExApiV1.IDocumentosIdConsultarEspecieGet {

@Override
public void run(Request req, Response resp, ExApiV1Context ctx) throws Exception {
String siglaDoDocumento = req.id;
Long idDoDocumento = getIdDoDocumentoBySigla(compactarSigla(siglaDoDocumento));
resp.idDoc = idDoDocumento.toString();
resp.siglaDocumento = siglaDoDocumento;
Long IdDoModeloDoDocumento = obterModeloDoDocumento(idDoDocumento);
resp.idModelo = IdDoModeloDoDocumento.toString();
resp.status = "Ok";
resp.nomeDoModelo = obterNomeDoModeloDoDocumento(idDoDocumento);

resp.especie = obterEspecieDoDocumento(idDoDocumento);
}

private String obterEspecieDoDocumento(Long idDoDocumento) throws AplicacaoException {
ExDocumento exDocumento = ExDao.getInstance().consultarExDocumentoPorId(idDoDocumento);
if (exDocumento == null) {
throw new AplicacaoException("Documento não encontrado com o ID: " + idDoDocumento);
}
String nomeDoModelo = exDocumento.getExModelo().getNmMod();

String especie = exDocumento.getExModelo().getExFormaDocumento().toString();
return especie;
}

private Long obterModeloDoDocumento(Long idDoDocumento) throws AplicacaoException {
//Código equivalente a select ID_MOD from ex_documento where ID_DOC = 2
ExDocumento exDocumento = ExDao.getInstance().consultarExDocumentoPorId(idDoDocumento);
if (exDocumento == null) {
throw new AplicacaoException("Documento não encontrado com o ID: " + idDoDocumento);
}

Long idDoModeloDoDocumento = exDocumento.getExModelo().getIdMod();
if (idDoModeloDoDocumento == null) {
throw new AplicacaoException("Modelo do documento não encontrado para o ID: " + idDoDocumento);
}

return idDoModeloDoDocumento;
}

private String obterNomeDoModeloDoDocumento(Long idDoDocumento) throws AplicacaoException {

ExDocumento exDocumento = ExDao.getInstance().consultarExDocumentoPorId(idDoDocumento);
if (exDocumento == null) {
throw new AplicacaoException("Documento não encontrado com o ID: " + idDoDocumento);
}
String nomeDoModelo = exDocumento.getExModelo().getNmMod();
return nomeDoModelo;
}

public static String compactarSigla(String sigla) {
if (sigla == null)
return null;
return sigla.replace("-", "").replace("/", "");
}

public Long getIdDoDocumentoBySigla(String sigla) throws AplicacaoException{
Long idDocumento = ExDao.getInstance().consultarIdDocumentoPorSigla(descompactarSigla(sigla));
return idDocumento;

}

public static String descompactarSigla(String siglaCompactada) {
if (siglaCompactada == null) {
return null; // Ou lançar uma exceção, dependendo da lógica do seu negócio
}

// Verifica se a sigla tem o comprimento mínimo esperado (sem sufixo)
if (siglaCompactada.length() < 15) {
return null; // Ou lançar uma exceção
}

String prefixo = siglaCompactada.substring(0, 4);
String tipoDocumento = siglaCompactada.substring(4, 7);
String ano = siglaCompactada.substring(7, 11);
String numeroSequencial;
String sufixo = "";

// Verifica se existe um sufixo após o número sequencial
if (siglaCompactada.length() > 16) {
numeroSequencial = siglaCompactada.substring(11, 16);
sufixo = "-" + siglaCompactada.substring(16);
} else {
numeroSequencial = siglaCompactada.substring(11);
}

return prefixo + "-" + tipoDocumento + "-" + ano + "/" + numeroSequencial + sufixo;
}


@Override
public String getContext() {
return "verificar assinatura";
}
}
46 changes: 34 additions & 12 deletions sigaex/src/main/java/br/gov/jfrj/siga/ex/api/v1/IExApiV1.java
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,18 @@ public static class ModeloListaHierarquicaItem implements ISwaggerModel {
public Boolean selected;
}

public static class ModeloListaHierarquicaEspecieItem implements ISwaggerModel {
public String idModelo;
public String idModeloInicial;
public String nome;
public String descr;
public Long level;
public String keywords;
public Boolean group;
public Boolean selected;
public String especie;
}

public static class ClassificacaoItem implements ISwaggerModel {
public String idClassificacao;
public String sigla;
Expand Down Expand Up @@ -260,6 +272,21 @@ public static class Response implements ISwaggerResponse {
public void run(Request req, Response resp, ExApiV1Context ctx) throws Exception;
}

public interface IModelosListaHierarquicaEspecieGet extends ISwaggerMethod {
public static class Request implements ISwaggerRequest {
public Boolean isEditandoAnexo;
public Boolean isCriandoSubprocesso;
public String siglaMobPai;
public Boolean isAutuando;
}

public static class Response implements ISwaggerResponse {
public List<ModeloListaHierarquicaEspecieItem> list = new ArrayList<>();
}

public void run(Request req, Response resp, ExApiV1Context ctx) throws Exception;
}

public interface IDocumentosSiglaModelosParaIncluirGet extends ISwaggerMethod {
public static class Request implements ISwaggerRequest {
public String sigla;
Expand Down Expand Up @@ -1592,10 +1619,6 @@ public static class Response implements ISwaggerResponse {
public void run(Request req, Response resp, ExApiV1Context ctx) throws Exception;
}

//TODO: Renomear id para sigla
//TODO: Suportar sigla como entrada
//TODO: Deve retornar o id do documento pela sigla
//TODO: Deve retornar o modelo correto
public interface IDocumentosIdConsultarModeloGet extends ISwaggerMethod {
public static class Request implements ISwaggerRequest {
public String id;
Expand All @@ -1611,25 +1634,24 @@ public static class Response implements ISwaggerResponse {

public void run(Request req, Response resp, ExApiV1Context ctx) throws Exception;
}



/*
public interface IDocumentosSiglaModeloGet extends ISwaggerMethod {

public interface IDocumentosIdConsultarEspecieGet extends ISwaggerMethod {
public static class Request implements ISwaggerRequest {
public String sigla;
public String id;
}

public static class Response implements ISwaggerResponse {
public String idDoc;
public String siglaDocumento;
public String idModelo;
public String nomeDoModelo;
public String status;
public String especie;
}

public void run(Request req, Response resp, ExApiV1Context ctx) throws Exception;
}
*/


public interface IDocumentosLocalizarMaisRecenteGet extends ISwaggerMethod {
public static class Request implements ISwaggerRequest {
public String modelo;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package br.gov.jfrj.siga.ex.api.v1;

import java.util.ArrayList;
import java.util.List;

import br.gov.jfrj.siga.dp.DpLotacao;
import br.gov.jfrj.siga.dp.DpPessoa;
import br.gov.jfrj.siga.ex.ExMobil;
import br.gov.jfrj.siga.ex.ExModelo;
import br.gov.jfrj.siga.ex.api.v1.IExApiV1.IModelosListaHierarquicaEspecieGet;
import br.gov.jfrj.siga.ex.api.v1.IExApiV1.ModeloListaHierarquicaEspecieItem;
import br.gov.jfrj.siga.ex.bl.Ex;
import br.gov.jfrj.siga.util.ListaHierarquica;
import br.gov.jfrj.siga.util.ListaHierarquicaEspecie;
import br.gov.jfrj.siga.util.ListaHierarquicaEspecieItem;
import br.gov.jfrj.siga.util.ListaHierarquicaItem;

public class ModelosListaHierarquicaEspecieGet implements IModelosListaHierarquicaEspecieGet {

@Override
public String getContext() {
return "obter lista de modelos";
}

@Override
public void run(Request req, Response resp, ExApiV1Context ctx) throws Exception {
boolean isEditandoAnexo = (req.isEditandoAnexo != null && req.isEditandoAnexo ? true : false);
boolean isCriandoSubprocesso = (req.isCriandoSubprocesso != null && req.isCriandoSubprocesso ? true : false);
ExMobil mobPai = null;
String headerValue = null;
boolean isAutuando = (req.isAutuando != null && req.isAutuando ? true : false);

if (req.siglaMobPai != null) {
mobPai = ctx.buscarMobil(req.siglaMobPai, req, resp, "Documento Pai");
}
DpPessoa titular = ctx.getTitular();
DpLotacao lotaTitular = ctx.getLotaTitular();
List<ExModelo> modelos = Ex.getInstance().getBL().obterListaModelos(null, null, isEditandoAnexo,
isCriandoSubprocesso, mobPai, headerValue, true, titular, lotaTitular, isAutuando);

resp.list = new ArrayList<>();
for (ListaHierarquicaEspecieItem m : getListaHierarquicaEspecie(modelos).getList()) {
ModeloListaHierarquicaEspecieItem mi = new ModeloListaHierarquicaEspecieItem();
mi.idModelo = (m.getValue() != null ? m.getValue().toString() : "");
mi.idModeloInicial = (m.getIdInicial() != null ? m.getIdInicial().toString() : "");
mi.nome = m.getText();
mi.descr = m.getSearchText();
mi.level = (long) m.getLevel();
mi.group = m.getGroup();
mi.selected = m.getSelected();
mi.keywords = m.getKeywords();
mi.especie = m.getEspecie();
System.out.println("##################");
System.out.println("##################");
System.out.println(mi);
System.out.println("##################");
System.out.println("##################");
resp.list.add(mi);
}
}

private ListaHierarquicaEspecie getListaHierarquicaEspecie(List<ExModelo> modelos) {
ListaHierarquicaEspecie lh = new ListaHierarquicaEspecie();
for (ExModelo m : modelos) {
//TODO remover os system out println
System.out.println("##################");
System.out.println("##################");
System.out.println(m);
System.out.println("##################");
System.out.println("##################");
System.out.println(m.getIdInicial().toString());
System.out.println(m.getNmMod());
System.out.println(m.getDescMod());
System.out.println(m.getId());
System.out.println(false);
String especie = "";
if (m.getExFormaDocumento() != null ) {
if (m.getExFormaDocumento().getDescricao() != null) {
especie = m.getExFormaDocumento().getDescricao();
System.out.println(m.getExFormaDocumento().getDescricao());
}
}

lh.add(m.getIdInicial().toString(), m.getNmMod(), m.getDescMod(), m.getId(), false, especie);
}
return lh;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package br.gov.jfrj.siga.util;

import java.util.ArrayList;
import java.util.List;

import br.gov.jfrj.siga.base.util.Texto;

public class ListaHierarquicaEspecie {

static final String DIVIDER = ": ";
List<String> groups = new ArrayList<String>();
List<ListaHierarquicaEspecieItem> l = new ArrayList<ListaHierarquicaEspecieItem>();

public void add(String idInicial, String text, Long value, boolean selected, String especie) {
if (text == null || value == null)
return;
String as[] = text.split(DIVIDER);
for (int i = 0; i < as.length; i++) {
String s = as[i];

// igual ao anterior
if (i < groups.size() && s.equals(groups.get(i)))
continue;
else {
groups = groups.subList(0, i);
groups.add(s);
boolean group = i < as.length - 1;
l.add(new ListaHierarquicaEspecieItem(i + 1, (group ? null : idInicial), s, group ? null : Texto.removeAcentoMaiusculas(text),
group ? null : value, group, group ? false : selected, s));
}
}
}

/* Com Busca complementar*/
public void add(String idInicial, String text, String keywords, Long value, boolean selected, String especie) {
if (text == null || value == null)
return;
String as[] = text.split(DIVIDER);
for (int i = 0; i < as.length; i++) {
String s = as[i];

// igual ao anterior
if (i < groups.size() && s.equals(groups.get(i)))
continue;
else {
groups = groups.subList(0, i);
groups.add(s);
boolean group = i < as.length - 1;
l.add(new ListaHierarquicaEspecieItem(i + 1, (group ? null : idInicial), s, group ? null : Texto.removeAcentoMaiusculas(text.concat(" - " + keywords)), keywords,
group ? null : value, group, group ? false : selected, s));
}
}
}

public List<ListaHierarquicaEspecieItem> getList() {
return l;
}
}
Loading

0 comments on commit 9695dda

Please sign in to comment.