From 3ab4835e3615e0db83eb0dc73cc19b87e2702a72 Mon Sep 17 00:00:00 2001 From: Frederico Palma Date: Tue, 27 Jun 2006 19:35:00 +0000 Subject: [PATCH] no message git-svn-id: https://svn.coded.pt/svn/SIPRP@532 bb69d46d-e84e-40c8-a05a-06db0d633741 --- .../doGetListaTrabalhadoresPendentes.java | 129 ++++++++++++++++-- .../classes/siprp/pagina/siprpServlet.java | 12 +- 2 files changed, 122 insertions(+), 19 deletions(-) diff --git a/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresPendentes.java b/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresPendentes.java index 71c1b4a0..19916ebe 100644 --- a/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresPendentes.java +++ b/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresPendentes.java @@ -42,6 +42,21 @@ public class doGetListaTrabalhadoresPendentes protected static int MOTIVO_OCASIONAL = 3; protected static int MOTIVO_PERIODICA_INICIAL = 5; + protected static final Hashtable CORES_ESTADOS = new Hashtable(); + protected static final Hashtable TEXTOS_ESTADOS = new Hashtable(); + static + { + CORES_ESTADOS.put( new Integer( ESTADO_NAO_APLICAVEL ), "white" ); + CORES_ESTADOS.put( new Integer( ESTADO_PENDENTE ), "red" ); + CORES_ESTADOS.put( new Integer( ESTADO_MARCADO ), "yellow" ); + CORES_ESTADOS.put( new Integer( ESTADO_TRATADO ), "green" ); + + TEXTOS_ESTADOS.put( new Integer( ESTADO_NAO_APLICAVEL ), "n.a." ); + TEXTOS_ESTADOS.put( new Integer( ESTADO_PENDENTE ), "pendente" ); + TEXTOS_ESTADOS.put( new Integer( ESTADO_MARCADO ), "pendente" ); +// TEXTOS_ESTADOS.put( new Integer( ESTADO_TRATADO ), "green" ); + } + protected java.sql.Date today; protected long todayMillis; @@ -298,9 +313,13 @@ public class doGetListaTrabalhadoresPendentes for( int n = 0; n < trabalhadores.length; n++ ) { - Object marcacoes[][] = ( Object[][] ) marcacoesPorID.get( trabalhadores[ n ].getID() ); - Object ocasionais[][] = ( Object[][] ) ocasionaisPorID.get( trabalhadores[ n ].getID() ); + Object marcacoes[][] = ( Object[][] ) ( ( Vector )marcacoesPorID.get( trabalhadores[ n ].getID() ) ).toArray( new Object[ 0 ][] ); + Object ocasionais[][] = ( Object[][] ) ( ( Vector )ocasionaisPorID.get( trabalhadores[ n ].getID() ) ).toArray( new Object[ 0 ][] ); Object agrupadas[][] = agruparMarcacoes( marcacoes, ocasionais ); + acrescentarTrabalhador( empresaId, estabelecimentoId, + trabalhadores[ n ], null, + agrupadas, links, desc, + true, true ); } HashMap hmValues = new HashMap(); @@ -475,12 +494,13 @@ public class doGetListaTrabalhadoresPendentes return agrupadas; } - protected void acrescentarTrabalhador( IDObject trabalhador, java.util.Date dataFicha, + protected void acrescentarTrabalhador( String empresaID, String estabelecimentoID, + IDObject trabalhador, java.util.Date dataFicha, Object marcacoes[][], Vector links, Vector dados, boolean perfilConsultas, boolean perfilExames ) { int estado[] = new int[ 2 ]; - + int index = 0; if( marcacoes.length == 0 ) { estado[ 0 ] = perfilConsultas ? ESTADO_PENDENTE : ESTADO_NAO_APLICAVEL; @@ -490,7 +510,7 @@ public class doGetListaTrabalhadoresPendentes { java.util.Date dataConsulta; java.util.Date dataExame; - int index = -1; + index = -1; for( ; index + 1 < marcacoes.length; index++ ) { int n = index + 1; @@ -518,18 +538,99 @@ public class doGetListaTrabalhadoresPendentes index = 0; } boolean found = false; - for( ; !found; index++ ) + for( ; !found && index < marcacoes.length; index++ ) { -// java.util.Date dataConsulta = ( java.util.Date ) marcacoes[ n ][ 0 ]; -// java.util.Date dataExame = ( java.util.Date ) marcacoes[ n ][ 3 ]; -// if( ( dataConsulta == null || dataConsulta.before( today ) ) != -// ( dataExame == null || dataExame.before( today ) ) ) -// { -// break; -// } - + dataConsulta = ( java.util.Date ) marcacoes[ index ][ 0 ]; + dataExame = ( java.util.Date ) marcacoes[ index ][ 3 ]; + boolean temConsulta = dataConsulta != null; + long diffConsulta = temConsulta ? dataConsulta.getTime() - today.getTime() : 0; + boolean temExame = dataExame != null; + long diffExame = temExame ? dataExame.getTime() - today.getTime() : 0; + if( ( temConsulta && diffConsulta < CATORZE_DIAS ) || ( temExame && diffExame < CATORZE_DIAS ) ) + { + found = true; + } + } + if( index >= marcacoes.length ) + { + index = marcacoes.length - 1; + } + else + { + if( marcacoes.length > 1 ) + { + dataConsulta = ( java.util.Date ) marcacoes[ index ][ 0 ]; + dataExame = ( java.util.Date ) marcacoes[ index ][ 3 ]; + Calendar calToday = Calendar.getInstance(); + calToday.setTime( today ); + calToday.add( Calendar.YEAR, -2 ); + if( dataConsulta.before( calToday.getTime() ) ) + { + index++; + } + } + } + dataConsulta = ( java.util.Date ) marcacoes[ index ][ 0 ]; + Integer estadoConsulta = ( Integer ) marcacoes[ index ][ 1 ]; + Integer motivoConsulta = ( Integer ) marcacoes[ index ][ 2 ]; + dataExame = ( java.util.Date ) marcacoes[ index ][ 3 ]; + Integer estadoExame = ( Integer ) marcacoes[ index ][ 4 ]; + if( perfilConsultas ) + { + if( dataConsulta == null ) + { + estado[ 0 ] = ESTADO_PENDENTE; + } + else if( estadoConsulta == null || estadoConsulta.intValue() != 2 ) + { + estado[ 0 ] = ESTADO_MARCADO; + } + else + { + estado[ 0 ] = ESTADO_TRATADO; + } + } + else + { + estado[ 0 ] = ESTADO_NAO_APLICAVEL; + } + if( perfilExames ) + { + if( dataExame == null ) + { + if( motivoConsulta != null && motivoConsulta.intValue() != MOTIVO_OCASIONAL ) + { + estado[ 1 ] = ESTADO_PENDENTE; + } + else + { + estado[ 1 ] = ESTADO_NAO_APLICAVEL; + } + } + else if( estadoExame == null || estadoExame.intValue() != 2 ) + { + estado[ 1 ] = ESTADO_MARCADO; + } + else + { + estado[ 1 ] = ESTADO_TRATADO; + } + } + else + { + estado[ 1 ] = ESTADO_NAO_APLICAVEL; } } + links.add( "/"+servletName+"/?"+empresaID+"/"+estabelecimentoID+"/"+trabalhador.getID() ); + HashMap dadosTrabalhador = new HashMap(); + dadosTrabalhador.put( "Nome", trabalhador.toString() ); + dadosTrabalhador.put( "Consulta", CORES_ESTADOS.get( new Integer( estado[ 0 ] ) ) ); + Object text = TEXTOS_ESTADOS.get( new Integer( estado[ 0 ] ) ); + dadosTrabalhador.put( "Consulta_estado", text != null ? text : marcacoes[ index ][ 0 ] ); + dadosTrabalhador.put( "Exame", CORES_ESTADOS.get( new Integer( estado[ 1 ] ) ) ); + text = TEXTOS_ESTADOS.get( new Integer( estado[ 0 ] ) ); + dadosTrabalhador.put( "Exame_estado", text != null ? text : marcacoes[ index ][ 3 ] ); + dados.add( dadosTrabalhador ); } // protected boolean verificarTrabalhador( Object consultas[][], Object exames[][] ) diff --git a/trunk/WEB-INF/classes/siprp/pagina/siprpServlet.java b/trunk/WEB-INF/classes/siprp/pagina/siprpServlet.java index 717b8bc2..e75383fb 100644 --- a/trunk/WEB-INF/classes/siprp/pagina/siprpServlet.java +++ b/trunk/WEB-INF/classes/siprp/pagina/siprpServlet.java @@ -94,7 +94,8 @@ public class siprpServlet extends HttpServlet public static final String bdNullString = ""; // String a mostrar quando o campo lido da BD é null public static final String bdEmailEmpresa = "email"; // campo que contem email da empresa - + protected ServletContext CONTEXT; + // Arrays public static final String[][] trabalhadorDescFields = new String [][] { // nome que o user ve, nome do campo na tabela @@ -112,7 +113,7 @@ public class siprpServlet extends HttpServlet { try { - + CONTEXT = this.getServletContext(); String TEMPLATE_DIR = this.getServletContext().getRealPath( "/" ) + "html/"; System.out.println( "DIR: " + TEMPLATE_DIR ); Properties props = new Properties(); @@ -634,12 +635,13 @@ System.out.println( "query: " + queryString ); protected Executer getExecuter() throws Exception { - ServletContext context = getServletContext(); - DBManager dbm = ( DBManager ) context.getAttribute( Singleton.DEFAULT_DBMANAGER ); +// ServletContext context = CONTEXT; + DBManager dbm = null; +// ( DBManager ) context.getAttribute( Singleton.DEFAULT_DBMANAGER ); if( dbm == null ) { dbm = new JDBCManager( bdLocalUrl, bdLocalUsername, bdLocalPassword , 10, 8, 8, null ); - context.setAttribute( Singleton.DEFAULT_DBMANAGER, dbm ); +// context.setAttribute( Singleton.DEFAULT_DBMANAGER, dbm ); } return dbm.getSharedExecuter(); }