From f383b3dc5309e59e92ba2ae65ad3fc99e2f22266 Mon Sep 17 00:00:00 2001 From: git Date: Mon, 8 Mar 2021 12:42:30 -0300 Subject: [PATCH 01/11] =?UTF-8?q?Melhorias=20do=20Pull=20Request=20PCRJ79?= =?UTF-8?q?=20conforme=20orienta=C3=A7=C3=B5es=20da=20comunidade=20SIGA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- siga/src/main/webapp/css/style_siga.css | 6 +++++- siga/src/main/webapp/css/style_siga_govsp.css | 6 +++++- sigaex/src/main/webapp/WEB-INF/page/exDocumento/edita.jsp | 8 +------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/siga/src/main/webapp/css/style_siga.css b/siga/src/main/webapp/css/style_siga.css index 175f06d4583..17ec06f621a 100644 --- a/siga/src/main/webapp/css/style_siga.css +++ b/siga/src/main/webapp/css/style_siga.css @@ -404,4 +404,8 @@ article p em { position: absolute; display: none; color: #DDD; -} \ No newline at end of file +} + +.div-width-min0 { + min-width: 0px !important; +} diff --git a/siga/src/main/webapp/css/style_siga_govsp.css b/siga/src/main/webapp/css/style_siga_govsp.css index 9698edccfa2..fce1ec09bd8 100644 --- a/siga/src/main/webapp/css/style_siga_govsp.css +++ b/siga/src/main/webapp/css/style_siga_govsp.css @@ -29,4 +29,8 @@ p.gt-table-action-list a.link-tag { margin-top: 0.4em; -} \ No newline at end of file +} + +.div-width-min0 { + min-width: 0px !important; +} diff --git a/sigaex/src/main/webapp/WEB-INF/page/exDocumento/edita.jsp b/sigaex/src/main/webapp/WEB-INF/page/exDocumento/edita.jsp index 1b2781f49dc..9e25a80f433 100644 --- a/sigaex/src/main/webapp/WEB-INF/page/exDocumento/edita.jsp +++ b/sigaex/src/main/webapp/WEB-INF/page/exDocumento/edita.jsp @@ -6,12 +6,6 @@ <%@ taglib uri="http://localhost/jeetags" prefix="siga"%> <%@ taglib uri="http://localhost/functiontag" prefix="f"%> - - @@ -90,7 +84,7 @@
-
+
+ \ No newline at end of file diff --git a/sigawf/src/main/webapp/WEB-INF/page/wfDiagrama/exibe.jsp b/sigawf/src/main/webapp/WEB-INF/page/wfDiagrama/exibe.jsp index 692cb685744..9a26237a696 100644 --- a/sigawf/src/main/webapp/WEB-INF/page/wfDiagrama/exibe.jsp +++ b/sigawf/src/main/webapp/WEB-INF/page/wfDiagrama/exibe.jsp @@ -134,8 +134,8 @@ var smallsvg = $('#output :first-child').first(); var smallviewbox = smallsvg.attr('viewBox'); - if (smallheight > smallwidth * 4/4) - smallheight = smallwidth * 4/4; + if (smallheight > smallwidth * 120/100) + smallheight = smallwidth * 120/100; if (smallsvg && smallsvg[0] && smallsvg[0].viewBox && smallsvg[0].viewBox.baseVal){ diff --git a/sigawf/src/main/webapp/js/diagrama.js b/sigawf/src/main/webapp/js/diagrama.js index 04c3888feeb..d4b39c17509 100644 --- a/sigawf/src/main/webapp/js/diagrama.js +++ b/sigawf/src/main/webapp/js/diagrama.js @@ -361,6 +361,7 @@ app success : function(data) { document .getElementById('graph-workflow').innerHTML = data; + window.updateContainer(); }, error : function(data) { $scope.showError(data); From 653a8b6e00e1c43e649d81d4fffa301942ce2790 Mon Sep 17 00:00:00 2001 From: Renato Crivano Date: Mon, 15 Mar 2021 17:20:53 -0300 Subject: [PATCH 08/11] WF: Implementando a busca por sigla a partir da caixa de busca --- .../java/br/gov/jfrj/siga/wf/dao/WfDao.java | 17 ++++- .../jfrj/siga/wf/model/WfProcedimento.java | 10 ++- .../br/gov/jfrj/siga/wf/util/SiglaUtils.java | 7 +- .../WfDefinicaoDeProcedimentoDaoFiltro.java | 8 +++ .../siga/wf/util/WfProcedimentoDaoFiltro.java | 8 +++ .../siga/vraptor/PrincipalController.java | 8 ++- .../jfrj/siga/wf/vraptor/WfAppController.java | 4 +- .../jfrj/siga/wf/vraptor/WfController.java | 2 +- .../siga/wf/vraptor/WfDiagramaController.java | 61 ++++++++++++----- .../wf/vraptor/WfProcedimentoController.java | 66 +++++++++++++++++++ .../wf/vraptor/WfRelatorioController.java | 2 +- .../wf/vraptor/WfSelecionavelController.java | 59 +++++++++++++++++ 12 files changed, 222 insertions(+), 30 deletions(-) create mode 100644 siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/WfDefinicaoDeProcedimentoDaoFiltro.java create mode 100644 siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/WfProcedimentoDaoFiltro.java create mode 100644 sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfProcedimentoController.java create mode 100644 sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfSelecionavelController.java diff --git a/siga-wf/src/main/java/br/gov/jfrj/siga/wf/dao/WfDao.java b/siga-wf/src/main/java/br/gov/jfrj/siga/wf/dao/WfDao.java index 0212555854d..4dd977b3559 100644 --- a/siga-wf/src/main/java/br/gov/jfrj/siga/wf/dao/WfDao.java +++ b/siga-wf/src/main/java/br/gov/jfrj/siga/wf/dao/WfDao.java @@ -59,6 +59,8 @@ import br.gov.jfrj.siga.wf.model.WfVariavel; import br.gov.jfrj.siga.wf.util.SiglaUtils; import br.gov.jfrj.siga.wf.util.SiglaUtils.SiglaDecodificada; +import br.gov.jfrj.siga.wf.util.WfDefinicaoDeProcedimentoDaoFiltro; +import br.gov.jfrj.siga.wf.util.WfProcedimentoDaoFiltro; import br.gov.jfrj.siga.wf.util.WfTarefa; /** @@ -270,7 +272,15 @@ public List consultarProcedimentosParaEstatisticasPorPrincipalIn return result; } - public T consultarPorSigla(String sigla, Class clazz) { + public WfDefinicaoDeProcedimento consultarPorSigla(WfDefinicaoDeProcedimentoDaoFiltro flt) { + return consultarPorSigla(flt.getSigla(), WfDefinicaoDeProcedimento.class, flt.ouDefault); + } + + public WfProcedimento consultarPorSigla(WfProcedimentoDaoFiltro flt) { + return consultarPorSigla(flt.getSigla(), WfProcedimento.class, flt.ouDefault); + } + + public T consultarPorSigla(String sigla, Class clazz, CpOrgaoUsuario ouDefault) { String acronimo = null; if (clazz.isAssignableFrom(WfProcedimento.class)) { acronimo = "WF"; @@ -279,7 +289,7 @@ public T consultarPorSigla(String sigla, Class clazz) { } else { throw new RuntimeException("Não é permitido consultar por sigla registros da classe " + clazz.getName()); } - SiglaDecodificada d = SiglaUtils.parse(sigla, acronimo, null); + SiglaDecodificada d = SiglaUtils.parse(sigla, acronimo, ouDefault); Integer ano = d.ano; Integer numero = d.numero; CpOrgaoUsuario orgaoUsuario = d.orgaoUsuario; @@ -288,7 +298,8 @@ public T consultarPorSigla(String sigla, Class clazz) { CriteriaQuery q = criteriaBuilder.createQuery(clazz); Root c = q.from(clazz); Join joinOrgao = c.join("orgaoUsuario", JoinType.INNER); - if (clazz.isAssignableFrom(Historico.class)) + // if (clazz.isAssignableFrom(Historico.class)) + if (Historico.class.isAssignableFrom(clazz)) q.where(cb().equal(c.get("numero"), numero), cb().equal(c.get("ano"), ano), cb().equal(c.get("hisAtivo"), 1), cb().equal(joinOrgao.get("idOrgaoUsu"), orgaoUsuario.getId())); else diff --git a/siga-wf/src/main/java/br/gov/jfrj/siga/wf/model/WfProcedimento.java b/siga-wf/src/main/java/br/gov/jfrj/siga/wf/model/WfProcedimento.java index e9ed14a8fd0..c8cceb51a2d 100644 --- a/siga-wf/src/main/java/br/gov/jfrj/siga/wf/model/WfProcedimento.java +++ b/siga-wf/src/main/java/br/gov/jfrj/siga/wf/model/WfProcedimento.java @@ -32,7 +32,6 @@ import org.hibernate.annotations.BatchSize; import com.crivano.jflow.model.ProcessInstance; -import com.crivano.jflow.model.TaskDefinition; import com.crivano.jflow.model.enm.ProcessInstanceStatus; import br.gov.jfrj.siga.Service; @@ -47,6 +46,7 @@ import br.gov.jfrj.siga.ex.service.ExService; import br.gov.jfrj.siga.model.ActiveRecord; import br.gov.jfrj.siga.model.Objeto; +import br.gov.jfrj.siga.model.Selecionavel; import br.gov.jfrj.siga.parser.PessoaLotacaoParser; import br.gov.jfrj.siga.sinc.lib.Desconsiderar; import br.gov.jfrj.siga.wf.dao.WfDao; @@ -64,7 +64,7 @@ @BatchSize(size = 500) @Table(name = "sigawf.wf_procedimento") public class WfProcedimento extends Objeto - implements ProcessInstance { + implements ProcessInstance, Selecionavel { public static ActiveRecord AR = new ActiveRecord<>(WfProcedimento.class); @Id @@ -750,4 +750,10 @@ public String getEvent() { return getEventoNome(); } + @Override + public String getDescricao() { + return getDefinicaoDeProcedimento().getDescricao() + + (getDefinicaoDeTarefaCorrente() != null ? " - " + getDefinicaoDeTarefaCorrente().getNome() : ""); + } + } \ No newline at end of file diff --git a/siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/SiglaUtils.java b/siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/SiglaUtils.java index bf10e40dac2..be828c36eab 100644 --- a/siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/SiglaUtils.java +++ b/siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/SiglaUtils.java @@ -45,9 +45,12 @@ public static SiglaDecodificada parse(String sigla, String tipo, CpOrgaoUsuario d.id = Long.parseLong(m2.group(1)); return d; } else if (m1.find()) { - d.ano = Integer.parseInt(m1.group(3)); + if (m1.group(3) != null) + d.ano = Integer.parseInt(m1.group(3)); + if (m1.group(4) != null) d.numero = Integer.parseInt(m1.group(4)); - d.orgaoUsuario = mapAcronimo.get(m1.group(1)); + if (m1.group(1) != null) + d.orgaoUsuario = mapAcronimo.get(m1.group(1)); if (d.orgaoUsuario == null && ouDefault != null) d.orgaoUsuario = ouDefault; if (d.ano == null) diff --git a/siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/WfDefinicaoDeProcedimentoDaoFiltro.java b/siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/WfDefinicaoDeProcedimentoDaoFiltro.java new file mode 100644 index 00000000000..85e9c4f0125 --- /dev/null +++ b/siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/WfDefinicaoDeProcedimentoDaoFiltro.java @@ -0,0 +1,8 @@ +package br.gov.jfrj.siga.wf.util; + +import br.gov.jfrj.siga.dp.CpOrgaoUsuario; +import br.gov.jfrj.siga.model.dao.DaoFiltroSelecionavel; + +public class WfDefinicaoDeProcedimentoDaoFiltro extends DaoFiltroSelecionavel { + public CpOrgaoUsuario ouDefault = null; +} diff --git a/siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/WfProcedimentoDaoFiltro.java b/siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/WfProcedimentoDaoFiltro.java new file mode 100644 index 00000000000..989ad27d7c3 --- /dev/null +++ b/siga-wf/src/main/java/br/gov/jfrj/siga/wf/util/WfProcedimentoDaoFiltro.java @@ -0,0 +1,8 @@ +package br.gov.jfrj.siga.wf.util; + +import br.gov.jfrj.siga.dp.CpOrgaoUsuario; +import br.gov.jfrj.siga.model.dao.DaoFiltroSelecionavel; + +public class WfProcedimentoDaoFiltro extends DaoFiltroSelecionavel { + public CpOrgaoUsuario ouDefault = null; +} diff --git a/siga/src/main/java/br/gov/jfrj/siga/vraptor/PrincipalController.java b/siga/src/main/java/br/gov/jfrj/siga/vraptor/PrincipalController.java index a030f24bec0..edac27a6c89 100644 --- a/siga/src/main/java/br/gov/jfrj/siga/vraptor/PrincipalController.java +++ b/siga/src/main/java/br/gov/jfrj/siga/vraptor/PrincipalController.java @@ -155,7 +155,7 @@ private GenericoSelecao buscarGenericoPorSigla(String sigla, DpPessoa pes, DpLot } final Pattern p1 = Pattern.compile("^(?" + acronimos.toString() - + ")?-?(?:(?[A-Za-z]{3})|(?SR|TMPSR|GC|TMPGC|TP))-?([0-9][0-9A-Za-z\\.\\-\\/]*)$"); + + ")?-?(?:(?[A-Za-z]{3})|(?SR|TMPSR|GC|TMPGC|DP|WF|TP))-?([0-9][0-9A-Za-z\\.\\-\\/]*)$"); final Matcher m1 = p1.matcher(sigla); final GenericoSelecao sel = new GenericoSelecao(); @@ -190,6 +190,12 @@ private GenericoSelecao buscarGenericoPorSigla(String sigla, DpPessoa pes, DpLot case "TMPGC": lurls.add(urlBase + "/sigagc/public/app/selecionar?sigla=" + sigla + incluirMatricula); break; + case "DP": // Diagramas + lurls.add(urlBase + "/sigawf/public/app/diagrama/selecionar?sigla=" + sigla + incluirMatricula); + break; + case "WF": // Procedimentos + lurls.add(urlBase + "/sigawf/public/app/procedimento/selecionar?sigla=" + sigla + incluirMatricula); + break; case "TP": // Transportes lurls.add(urlBase + "/sigatp" + "/app/documento/selecionar?sigla=" + sigla + incluirMatricula + ";/sigatp/app/documento/exibir?sigla="); diff --git a/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfAppController.java b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfAppController.java index f40a255c9fb..597000957cd 100644 --- a/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfAppController.java +++ b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfAppController.java @@ -364,7 +364,7 @@ private Double converterParaDouble(StringQualquer campo) { @Post @Path("/app/procedimento/{sigla}/pegar") public void pegar(String sigla, String siglaPrincipal) throws Exception { - WfProcedimento pi = dao().consultarPorSigla(sigla, WfProcedimento.class); + WfProcedimento pi = dao().consultarPorSigla(sigla, WfProcedimento.class, null); Wf.getInstance().getBL().pegar(pi, getTitular(), getLotaTitular(), getIdentidadeCadastrante()); @@ -379,7 +379,7 @@ public void pegar(String sigla, String siglaPrincipal) throws Exception { @Post @Path("/app/procedimento/{sigla}/redirecionar") public void redirecionar(String sigla, String siglaPrincipal, Long tdId) throws Exception { - WfProcedimento pi = dao().consultarPorSigla(sigla, WfProcedimento.class); + WfProcedimento pi = dao().consultarPorSigla(sigla, WfProcedimento.class, null); if (tdId == null) throw new RuntimeException("Identificador da definição de tarefa não pode ser nulo"); diff --git a/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfController.java b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfController.java index b7a317f6ec6..c4f3fa41786 100644 --- a/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfController.java +++ b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfController.java @@ -17,7 +17,7 @@ public class WfController extends SigaController { - private static final String ACESSO_WF = "WF:Módulo de Workflow"; + static final String ACESSO_WF = "WF:Módulo de Workflow"; protected static final String ACESSO_EXCLUIR_INSTANCIA_DE_PROCESSO = "EXCLUIR:Excluir instancia de processo"; protected static final String ACESSO_ENCERRAR_INSTANCIA_DE_PROCESSO = "ENCERRAR:Encerrar instancia de processo"; protected static final String ACESSO_MOVER_TOKEN = "MOVER_TOKEN:Mover token"; diff --git a/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfDiagramaController.java b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfDiagramaController.java index d640ffd494a..2c7c627f307 100644 --- a/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfDiagramaController.java +++ b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfDiagramaController.java @@ -46,6 +46,7 @@ import br.gov.jfrj.siga.cp.model.HistoricoAuditavel; import br.gov.jfrj.siga.dp.DpLotacao; import br.gov.jfrj.siga.dp.DpPessoa; +import br.gov.jfrj.siga.model.GenericoSelecao; import br.gov.jfrj.siga.model.dao.DaoFiltroSelecionavel; import br.gov.jfrj.siga.model.dao.ModeloDao; import br.gov.jfrj.siga.sinc.lib.Item; @@ -64,15 +65,14 @@ import br.gov.jfrj.siga.wf.model.enm.WfAcessoDeEdicao; import br.gov.jfrj.siga.wf.model.enm.WfAcessoDeInicializacao; import br.gov.jfrj.siga.wf.util.NaoSerializar; -import br.gov.jfrj.siga.wf.util.WfTarefa; +import br.gov.jfrj.siga.wf.util.WfDefinicaoDeProcedimentoDaoFiltro; import br.gov.jfrj.siga.wf.util.WfUtil; @Controller -@Path("app/diagrama") public class WfDiagramaController - extends SigaSelecionavelControllerSupport { + extends WfSelecionavelController { - private static final String VERIFICADOR_ACESSO = "WF;FE;DEFP:Gerenciar Diagramas"; + private static final String VERIFICADOR_ACESSO = "FE;DEFP:Gerenciar Diagramas"; private static final String UTF8 = "utf-8"; public static String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"; @@ -182,8 +182,7 @@ public WfDiagramaController(HttpServletRequest request, Result result, WfDao dao this.context = context; this.util = util; } - - @Get("listar") + @Get("app/diagrama/listar") public void lista() throws Exception { try { assertAcesso(VERIFICADOR_ACESSO); @@ -196,7 +195,7 @@ public void lista() throws Exception { } } - @Get("exibir") + @Get("app/diagrama/exibir") public void exibe(final Long id) throws Exception { assertAcesso(VERIFICADOR_ACESSO); if (id != null) { @@ -206,7 +205,7 @@ public void exibe(final Long id) throws Exception { } } - @Get("editar") + @Get("app/diagrama/editar") public void edita(final Long id) throws UnsupportedEncodingException { assertAcesso(VERIFICADOR_ACESSO); if (id != null) { @@ -216,7 +215,7 @@ public void edita(final Long id) throws UnsupportedEncodingException { } } - @Get("{id}/carregar") + @Get("app/diagrama/{id}/carregar") public void carregar(final Long id) throws Exception { assertAcesso(VERIFICADOR_ACESSO); try { @@ -228,7 +227,7 @@ public void carregar(final Long id) throws Exception { } @Transacional - @Post("gravar") + @Post("app/diagrama/gravar") public void editarGravar(Long id, WfDefinicaoDeProcedimento pd) throws Exception { assertAcesso(VERIFICADOR_ACESSO); @@ -355,7 +354,7 @@ public void editarGravar(Long id, WfDefinicaoDeProcedimento pd) throws Exception } @Transacional - @Get("desativar") + @Get("app/diagrama/desativar") public void desativar(final Long id) throws Exception { ModeloDao.iniciarTransacao(); assertAcesso(VERIFICADOR_ACESSO); @@ -383,11 +382,6 @@ private WfDefinicaoDeProcedimento buscarAntiga(final Long idInicial) { return null; } - @Override - protected DaoFiltroSelecionavel createDaoFiltro() { - return null; - } - protected void jsonSuccess(final Object resp) { String s = gson.toJson(resp); result.use(Results.http()).addHeader("Content-Type", "application/json").body(s).setStatusCode(200); @@ -420,7 +414,7 @@ protected void jsonError(final Exception e) throws Exception { throw e; } - @Get("acesso-de-edicao/carregar") + @Get("app/diagrama/acesso-de-edicao/carregar") public void carregarAcessosDeEdicao() throws Exception { assertAcesso(VERIFICADOR_ACESSO); List list = new ArrayList<>(); @@ -430,7 +424,7 @@ public void carregarAcessosDeEdicao() throws Exception { result.use(Results.json()).from(list, "list").serialize(); } - @Get("acesso-de-inicializacao/carregar") + @Get("app/diagrama/acesso-de-inicializacao/carregar") public void carregarAcessosDeInicializacao() throws Exception { assertAcesso(VERIFICADOR_ACESSO); List list = new ArrayList<>(); @@ -439,4 +433,35 @@ public void carregarAcessosDeInicializacao() throws Exception { } result.use(Results.json()).from(list, "list").serialize(); } + + @Override + protected DaoFiltroSelecionavel createDaoFiltro() { + WfDefinicaoDeProcedimentoDaoFiltro flt = new WfDefinicaoDeProcedimentoDaoFiltro(); + if (flt.ouDefault == null) { + if (param("matricula") != null) { + final DpPessoa pes = daoPes(param("matricula")); + flt.ouDefault = pes.getOrgaoUsuario(); + } + } + return flt; + } + + @Get({ "public/app/diagrama/selecionar", "app/diagrama/selecionar" }) + public void selecionar(final String sigla, final String matricula) throws Exception { + String resultado = super.aSelecionar(sigla); + if (getSel() != null && matricula != null) { + GenericoSelecao sel = new GenericoSelecao(); + sel.setId(getSel().getId()); + sel.setSigla(getSel().getSigla()); + sel.setDescricao("/sigawf/app/diagrama/exibir?id=" + sel.getId()); + setSel(sel); + } + if (resultado.equals("ajax_retorno")) { + result.use(Results.http()) + .body("1;" + getSel().getId() + ";" + getSel().getSigla() + ";" + getSel().getDescricao()); + } else { + result.use(Results.http()).body("0"); + } + } + } diff --git a/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfProcedimentoController.java b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfProcedimentoController.java new file mode 100644 index 00000000000..26e860fc25c --- /dev/null +++ b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfProcedimentoController.java @@ -0,0 +1,66 @@ +package br.gov.jfrj.siga.wf.vraptor; + +import javax.inject.Inject; +import javax.persistence.EntityManager; +import javax.servlet.http.HttpServletRequest; + +import br.com.caelum.vraptor.Controller; +import br.com.caelum.vraptor.Get; +import br.com.caelum.vraptor.Path; +import br.com.caelum.vraptor.Result; +import br.com.caelum.vraptor.view.Results; +import br.gov.jfrj.siga.dp.DpPessoa; +import br.gov.jfrj.siga.model.GenericoSelecao; +import br.gov.jfrj.siga.vraptor.SigaObjects; +import br.gov.jfrj.siga.vraptor.SigaSelecionavelControllerSupport; +import br.gov.jfrj.siga.wf.dao.WfDao; +import br.gov.jfrj.siga.wf.model.WfProcedimento; +import br.gov.jfrj.siga.wf.util.WfDefinicaoDeProcedimentoDaoFiltro; +import br.gov.jfrj.siga.wf.util.WfProcedimentoDaoFiltro; + +@Controller +public class WfProcedimentoController extends WfSelecionavelController { + /** + * @deprecated CDI eyes only + */ + public WfProcedimentoController() { + super(); + } + + @Inject + public WfProcedimentoController(HttpServletRequest request, Result result, WfDao dao, SigaObjects so, + EntityManager em) { + super(request, result, dao, so, em); + } + + @Override + protected WfProcedimentoDaoFiltro createDaoFiltro() { + WfProcedimentoDaoFiltro flt = new WfProcedimentoDaoFiltro(); + if (flt.ouDefault == null) { + if (param("matricula") != null) { + final DpPessoa pes = daoPes(param("matricula")); + flt.ouDefault = pes.getOrgaoUsuario(); + } + } + return flt; + } + + @Get({ "public/app/procedimento/selecionar", "app/procedimento/selecionar" }) + public void selecionar(final String sigla, final String matricula) throws Exception { + String resultado = super.aSelecionar(sigla); + if (getSel() != null && matricula != null) { + GenericoSelecao sel = new GenericoSelecao(); + sel.setId(getSel().getId()); + sel.setSigla(getSel().getSigla()); + sel.setDescricao("/sigawf/app/procedimento/" + sel.getId()); + setSel(sel); + } + if (resultado.equals("ajax_retorno")) { + result.use(Results.http()) + .body("1;" + getSel().getId() + ";" + getSel().getSigla() + ";" + getSel().getDescricao()); + } else { + result.use(Results.http()).body("0"); + } + } + +} diff --git a/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfRelatorioController.java b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfRelatorioController.java index e2cce25653a..47435477842 100644 --- a/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfRelatorioController.java +++ b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfRelatorioController.java @@ -56,7 +56,7 @@ public void listarParaGerarRelatorios() throws Exception { @Path("/app/rel/medir/{sigla}") public void medir(String sigla) throws Exception { assertAcesso(ACESSO_RELATORIOS); - WfDefinicaoDeProcedimento pd = dao().consultarPorSigla(sigla, WfDefinicaoDeProcedimento.class); + WfDefinicaoDeProcedimento pd = dao().consultarPorSigla(sigla, WfDefinicaoDeProcedimento.class, null); result.include("orgao", getLotaTitular().getOrgaoUsuario().getNmOrgaoUsu()); result.include("procedimento", pd); diff --git a/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfSelecionavelController.java b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfSelecionavelController.java new file mode 100644 index 00000000000..570b43d171a --- /dev/null +++ b/sigawf/src/main/java/br/gov/jfrj/siga/wf/vraptor/WfSelecionavelController.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright (c) 2006 - 2011 SJRJ. + * + * This file is part of SIGA. + * + * SIGA is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * SIGA is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with SIGA. If not, see . + ******************************************************************************/ +package br.gov.jfrj.siga.wf.vraptor; + +import java.util.ResourceBundle; + +import javax.persistence.EntityManager; +import javax.servlet.http.HttpServletRequest; + +import br.com.caelum.vraptor.Result; +import br.gov.jfrj.siga.base.AplicacaoException; +import br.gov.jfrj.siga.dp.dao.CpDao; +import br.gov.jfrj.siga.model.Selecionavel; +import br.gov.jfrj.siga.model.dao.DaoFiltroSelecionavel; +import br.gov.jfrj.siga.vraptor.SigaObjects; +import br.gov.jfrj.siga.vraptor.SigaSelecionavelControllerSupport; +import br.gov.jfrj.siga.wf.dao.WfDao; + +public abstract class WfSelecionavelController + extends SigaSelecionavelControllerSupport { + + private static ResourceBundle bundle; + + /** + * @deprecated CDI eyes only + */ + public WfSelecionavelController() { + super(); + } + + public WfSelecionavelController(HttpServletRequest request, Result result, CpDao dao, SigaObjects so, + EntityManager em) { + super(request, result, dao, so, em); + } + + public void assertAcesso(String pathServico) throws AplicacaoException { + so.assertAcesso(WfController.ACESSO_WF + ";" + pathServico); + } + + protected WfDao dao() { + return WfDao.getInstance(); + } +} From 13af07f7a05c8b2355828aace66063536fd37285 Mon Sep 17 00:00:00 2001 From: Newton Date: Mon, 15 Mar 2021 21:20:21 -0300 Subject: [PATCH 09/11] GOVSP1880* - Exibe doc pai no acompanhamento de protocolo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Passa a mostrar juntadas no documento filho e ao clicar na sigla do documento juntado, exibe acompanhamento de protocolo do documento pai também. --- .../br/gov/jfrj/siga/base/util/Utils.java | 17 ++++++++- .../java/br/gov/jfrj/siga/ex/ExDocumento.java | 26 +++++++++++++ .../br/gov/jfrj/siga/hibernate/ExDao.java | 7 +--- .../vraptor/ExMovimentacaoController.java | 6 +++ .../ExProcessoAutenticacaoController.java | 37 +++++++++++++++---- .../processoArquivoAutenticado.jsp | 29 ++++++++++----- 6 files changed, 98 insertions(+), 24 deletions(-) diff --git a/siga-base/src/main/java/br/gov/jfrj/siga/base/util/Utils.java b/siga-base/src/main/java/br/gov/jfrj/siga/base/util/Utils.java index 886d16c0d46..226251ad10b 100644 --- a/siga-base/src/main/java/br/gov/jfrj/siga/base/util/Utils.java +++ b/siga-base/src/main/java/br/gov/jfrj/siga/base/util/Utils.java @@ -2,10 +2,13 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; +import java.util.Arrays; import java.util.Map; +import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import br.gov.jfrj.siga.base.Texto; @@ -55,5 +58,17 @@ public static String getBaseUrl(HttpServletRequest request) { return scheme + serverName + serverPort + contextPath; } - + /* + * Devolve o valor do cookie com o nome correspondente + */ + public static String getCookieValue(HttpServletRequest request, String name) { + final Cookie[] cookies = request.getCookies(); + if(cookies == null) return null; + return Arrays.stream(cookies) + .filter(e -> name.equals(e.getName())) + .findAny() + .map(Cookie::getValue) + .orElse(null); + } + } \ No newline at end of file diff --git a/siga-ex/src/main/java/br/gov/jfrj/siga/ex/ExDocumento.java b/siga-ex/src/main/java/br/gov/jfrj/siga/ex/ExDocumento.java index ff01788ae65..7c9db1a30f6 100644 --- a/siga-ex/src/main/java/br/gov/jfrj/siga/ex/ExDocumento.java +++ b/siga-ex/src/main/java/br/gov/jfrj/siga/ex/ExDocumento.java @@ -2915,5 +2915,31 @@ public Long getIdDocPrincipal() { return this.idDocPrincipal; } + /** + * Verifica se o documento contém um determinado mobil + */ + public boolean contemMobil(ExMobil mob) { + for (ExMobil m : getExMobilSet()) { + if (m.equals(mob)) + return true; + } + return false; + } + + /** + * Retorna se o móbil possui acompanhamento de protocolo gerado. + * + * @return + */ + public boolean temAcompanhamentoDeProtocolo() { + boolean b = false; + for (ExMovimentacao movRef : getExMovimentacaoSet()) { + if (!movRef.isCancelada() + && movRef.getExTipoMovimentacao().getId() == ExTipoMovimentacao.TIPO_MOVIMENTACAO_GERAR_PROTOCOLO) + b = true; + } + return b; + } + } diff --git a/siga-ex/src/main/java/br/gov/jfrj/siga/hibernate/ExDao.java b/siga-ex/src/main/java/br/gov/jfrj/siga/hibernate/ExDao.java index 6a875cb2f19..bedd9255adf 100644 --- a/siga-ex/src/main/java/br/gov/jfrj/siga/hibernate/ExDao.java +++ b/siga-ex/src/main/java/br/gov/jfrj/siga/hibernate/ExDao.java @@ -415,18 +415,13 @@ public List consultarMovimentoIncluindoJuntadaPorMobils(List mobilRef = root.get("exMobilRef"); Join joinTipoMovimentacao = root.join("exTipoMovimentacao"); - predicateMobilIgnorandoMovimentacaoDeJuntada = builder.and(mobil.in(mobils), - builder.notEqual(joinTipoMovimentacao.get("idTpMov"), ExTipoMovimentacao.TIPO_MOVIMENTACAO_JUNTADA), - builder.notEqual(joinTipoMovimentacao.get("idTpMov"), ExTipoMovimentacao.TIPO_MOVIMENTACAO_CANCELAMENTO_JUNTADA), - builder.notEqual(joinTipoMovimentacao.get("idTpMov"), ExTipoMovimentacao.TIPO_MOVIMENTACAO_CANCELAMENTO_DE_MOVIMENTACAO)); - predicateMobilRefComoMovimentacaoDeJuntadaEDesentranhamento = builder.and(mobilRef.in(mobils), builder.or(builder.equal(root.get("exTipoMovimentacao"), ExTipoMovimentacao.TIPO_MOVIMENTACAO_JUNTADA), builder.equal(root.get("exTipoMovimentacao"), ExTipoMovimentacao.TIPO_MOVIMENTACAO_CANCELAMENTO_JUNTADA)), builder.isNull(root.get("exMovimentacaoCanceladora")) ); - predicate = builder.or(predicateMobilIgnorandoMovimentacaoDeJuntada, predicateMobilRefComoMovimentacaoDeJuntadaEDesentranhamento); + predicate = builder.or(mobil.in(mobils), predicateMobilRefComoMovimentacaoDeJuntadaEDesentranhamento); query.where(predicate) .orderBy(builder.desc(root.get("dtTimestamp"))); diff --git a/sigaex/src/main/java/br/gov/jfrj/siga/vraptor/ExMovimentacaoController.java b/sigaex/src/main/java/br/gov/jfrj/siga/vraptor/ExMovimentacaoController.java index d5dfc56dca7..dabc628defc 100644 --- a/sigaex/src/main/java/br/gov/jfrj/siga/vraptor/ExMovimentacaoController.java +++ b/sigaex/src/main/java/br/gov/jfrj/siga/vraptor/ExMovimentacaoController.java @@ -1123,6 +1123,12 @@ public void juntar(final String sigla) { result.include("doc", doc); result.include("subscritorSel", new DpPessoaSelecao()); result.include("documentoRefSel", documentoRefSel); + if (doc.temAcompanhamentoDeProtocolo()) { + result.include("msgCabecClass", "alert-warning"); + result.include("mensagemCabec", "Este documento possui acompanhamento do protocolo, portanto " + + "o histórico do documento juntado também será visível no acompanhamento do protocolo."); + } + } @Transacional diff --git a/sigaex/src/main/java/br/gov/jfrj/siga/vraptor/ExProcessoAutenticacaoController.java b/sigaex/src/main/java/br/gov/jfrj/siga/vraptor/ExProcessoAutenticacaoController.java index efab66ec2df..3610f742d62 100644 --- a/sigaex/src/main/java/br/gov/jfrj/siga/vraptor/ExProcessoAutenticacaoController.java +++ b/sigaex/src/main/java/br/gov/jfrj/siga/vraptor/ExProcessoAutenticacaoController.java @@ -15,6 +15,7 @@ import javax.inject.Inject; import javax.persistence.EntityManager; import javax.servlet.ServletContext; +import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -37,6 +38,8 @@ import br.gov.jfrj.siga.Service; import br.gov.jfrj.siga.base.AplicacaoException; import br.gov.jfrj.siga.base.Prop; +import br.gov.jfrj.siga.base.SigaMessages; +import br.gov.jfrj.siga.base.util.Utils; import br.gov.jfrj.siga.bluc.service.BlucService; import br.gov.jfrj.siga.bluc.service.HashRequest; import br.gov.jfrj.siga.bluc.service.HashResponse; @@ -151,13 +154,13 @@ public void processoautenticar(final String n, final String answer, final String result.include("assinaturaB64", assinaturaB64); result.include("certificadoB64", certificadoB64); result.include("atributoAssinavelDataHora", atributoAssinavelDataHora); - result.forwardTo(this).processoArquivoAutenticado(buildJwtToken(n)); + result.forwardTo(this).processoArquivoAutenticado(buildJwtToken(n), null); } @Get("/public/app/processoArquivoAutenticado_stream") - public Download processoArquivoAutenticado_stream(final String jwt, final boolean assinado, final Long idMov, + public Download processoArquivoAutenticado_stream(final boolean assinado, final Long idMov, final String certificadoB64, final String sigla) throws Exception { - + String jwt = Utils.getCookieValue(request, "jwt-prot"); if (jwt == null) { setDefaultResults(); result.redirectTo(URL_EXIBIR); @@ -251,16 +254,33 @@ private ByteArrayInputStream makeByteArrayInputStream(final byte[] content, fina // antigo metodo arquivo(); @Get("/public/app/processoArquivoAutenticado") - public void processoArquivoAutenticado(final String jwt) throws Exception { + public void processoArquivoAutenticado(final String tokenJwt, final Long idMovJuntada) throws Exception { + String jwt = tokenJwt; if (jwt == null) { - setDefaultResults(); - result.redirectTo(URL_EXIBIR); - return; + jwt = Utils.getCookieValue(request, "jwt-prot"); + if (jwt == null) { + setDefaultResults(); + result.redirectTo(URL_EXIBIR); + return; + } } String n = verifyJwtToken(jwt).get("n").toString(); ExArquivo arq = Ex.getInstance().getBL().buscarPorProtocolo(n); + if (idMovJuntada != null) { + // Se veio o id da mov de juntada do filho, mostra o documento pai + final ExMovimentacao movJuntada = dao().consultar(idMovJuntada, ExMovimentacao.class, false); + // Confirma que é realmente o documento pai + if (movJuntada != null && movJuntada.getExMobilRef() != null + && !movJuntada.isCancelada() + && (((ExDocumento) arq).contemMobil(movJuntada.getExMobil()))) { + arq = movJuntada.getExMobilRef().getDoc(); + } else { + throw new AplicacaoException("Documento não autorizado para visualização " + + "no acompanhamento do protocolo."); + } + } Set assinaturas = arq.getAssinaturasDigitais(); /* @@ -315,6 +335,9 @@ public void processoArquivoAutenticado(final String jwt) throws Exception { final ExDocumentoVO docVO = new ExDocumentoVO(doc, mob, getCadastrante(), p, l, true, true); docVO.exibe(); + Cookie cookie = new Cookie("jwt-prot", buildJwtToken(n)); + cookie.setMaxAge(1 * 60 * 60); + this.response.addCookie(cookie); result.include("movs", lista); result.include("sigla",exDocumentoDTO.getDoc().getSigla()); result.include("msg", exDocumentoDTO.getMsg()); diff --git a/sigaex/src/main/webapp/WEB-INF/page/exProcessoAutenticacao/processoArquivoAutenticado.jsp b/sigaex/src/main/webapp/WEB-INF/page/exProcessoAutenticacao/processoArquivoAutenticado.jsp index 4390e5e98c6..f2a907b9673 100644 --- a/sigaex/src/main/webapp/WEB-INF/page/exProcessoAutenticacao/processoArquivoAutenticado.jsp +++ b/sigaex/src/main/webapp/WEB-INF/page/exProcessoAutenticacao/processoArquivoAutenticado.jsp @@ -130,16 +130,25 @@ ${dt} ${mov.descrTipoMovimentacao} - | documento juntado ${mov.exMobil} - -  Ver - + | documento juntado  + + + ${mov.exMobil} + +  Ver + + + + ${mov.exMobilRef.sigla} + + From 6c7b4ab38dcdf2f50bfbc0b2371a73cbb2fedca3 Mon Sep 17 00:00:00 2001 From: Newton Date: Tue, 16 Mar 2021 12:46:11 -0300 Subject: [PATCH 10/11] =?UTF-8?q?Corre=C3=A7=C3=A3o=20WS=20Get=20/pessoas?= =?UTF-8?q?=20-=20devolver=20o=20id=20inicial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- siga/src/main/java/br/gov/jfrj/siga/api/v1/PessoasGet.java | 1 + siga/src/main/java/br/gov/jfrj/siga/api/v1/PessoasSiglaGet.java | 1 + 2 files changed, 2 insertions(+) diff --git a/siga/src/main/java/br/gov/jfrj/siga/api/v1/PessoasGet.java b/siga/src/main/java/br/gov/jfrj/siga/api/v1/PessoasGet.java index f3f5e2e69f4..5f2f213a333 100644 --- a/siga/src/main/java/br/gov/jfrj/siga/api/v1/PessoasGet.java +++ b/siga/src/main/java/br/gov/jfrj/siga/api/v1/PessoasGet.java @@ -128,6 +128,7 @@ private Pessoa pessoaToResultadoPesquisa(DpPessoa p) { Cargo cargo = new Cargo(); FuncaoConfianca funcao = new FuncaoConfianca(); // Pessoa + pessoa.idPessoaIni = p.getIdInicial().toString(); pessoa.sigla = p.getSiglaCompleta(); pessoa.nome = p.getNomePessoa(); pessoa.isExternaPessoa = p.isUsuarioExterno(); diff --git a/siga/src/main/java/br/gov/jfrj/siga/api/v1/PessoasSiglaGet.java b/siga/src/main/java/br/gov/jfrj/siga/api/v1/PessoasSiglaGet.java index ceb0babf541..2f920ca242b 100644 --- a/siga/src/main/java/br/gov/jfrj/siga/api/v1/PessoasSiglaGet.java +++ b/siga/src/main/java/br/gov/jfrj/siga/api/v1/PessoasSiglaGet.java @@ -56,6 +56,7 @@ private Pessoa pessoaToResultadoPesquisa(DpPessoa p) { Cargo cargo = new Cargo(); FuncaoConfianca funcao = new FuncaoConfianca(); // Pessoa + pessoa.idPessoaIni = p.getIdInicial().toString(); pessoa.sigla = p.getSiglaCompleta(); pessoa.nome = p.getNomePessoa(); pessoa.isExternaPessoa = p.isUsuarioExterno(); From 06f87c1cb91db1d4e81754404cf3332d435a3432 Mon Sep 17 00:00:00 2001 From: gigami Date: Tue, 16 Mar 2021 15:03:01 -0300 Subject: [PATCH 11/11] =?UTF-8?q?Vers=C3=A3o=2010.0.5.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/META-INF/tags/cabecalho.tag | 2 +- siga/src/main/webapp/META-INF/VERSION.MF | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/siga-vraptor-module/src/main/resources/META-INF/tags/cabecalho.tag b/siga-vraptor-module/src/main/resources/META-INF/tags/cabecalho.tag index 31b2f600b4c..bbcf2ca7040 100644 --- a/siga-vraptor-module/src/main/resources/META-INF/tags/cabecalho.tag +++ b/siga-vraptor-module/src/main/resources/META-INF/tags/cabecalho.tag @@ -97,7 +97,7 @@ ${meta} - + diff --git a/siga/src/main/webapp/META-INF/VERSION.MF b/siga/src/main/webapp/META-INF/VERSION.MF index f0e42d1e0d1..f74f6a0b6a5 100644 --- a/siga/src/main/webapp/META-INF/VERSION.MF +++ b/siga/src/main/webapp/META-INF/VERSION.MF @@ -1 +1 @@ -Siga-Versao: 10.0.4.0 \ No newline at end of file +Siga-Versao: 10.0.5.0 \ No newline at end of file