diff --git a/trunk/WEB-INF/classes/siprp/pagina/GlobalConstants.java b/trunk/WEB-INF/classes/siprp/pagina/GlobalConstants.java
index a21b8d38..51aa7377 100644
--- a/trunk/WEB-INF/classes/siprp/pagina/GlobalConstants.java
+++ b/trunk/WEB-INF/classes/siprp/pagina/GlobalConstants.java
@@ -28,4 +28,7 @@ public interface GlobalConstants
public static final String bdLocalUrl = "jdbc:postgresql://" + bdHost + ":" + bdPort + "/siprp_local";
public static final String DEFAULT_EMAIL = "geral@siprp.pt";
+
+ public static final int TIPO_MARCACAO_EXAMES = 0;
+ public static final int TIPO_MARCACAO_CONSULTA = 1;
}
diff --git a/trunk/WEB-INF/classes/siprp/pagina/doGetListaEmpresas.java b/trunk/WEB-INF/classes/siprp/pagina/doGetListaEmpresas.java
index 53b5a7e2..9b092a31 100644
--- a/trunk/WEB-INF/classes/siprp/pagina/doGetListaEmpresas.java
+++ b/trunk/WEB-INF/classes/siprp/pagina/doGetListaEmpresas.java
@@ -40,9 +40,9 @@ empresa_nome = ( String ) session.getAttribute( sessionCompanyName );
{
empresa_nome = null;
Class.forName(super.bdDriver);
- con = DriverManager.getConnection( bdUrl, bdUsername, bdPassword );
+ con = DriverManager.getConnection( bdLocalUrl, bdLocalUsername, bdLocalPassword );
dbQuery = new StringBuffer();
- dbQuery.append( "SELECT "+super.bdEmpresaIdRef+" , "+super.bdEmpresaNomeRef+" FROM empresas order by "+super.bdEmpresaNomeRef);
+ dbQuery.append( "SELECT id, designacao_social FROM empresas WHERE inactivo <> 'y' ORDER BY designacao_social" );
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
diff --git a/trunk/WEB-INF/classes/siprp/pagina/doGetListaEstabelecimentos.java b/trunk/WEB-INF/classes/siprp/pagina/doGetListaEstabelecimentos.java
index d95395a7..e8243c51 100644
--- a/trunk/WEB-INF/classes/siprp/pagina/doGetListaEstabelecimentos.java
+++ b/trunk/WEB-INF/classes/siprp/pagina/doGetListaEstabelecimentos.java
@@ -33,9 +33,9 @@ public class doGetListaEstabelecimentos extends siprpServlet{
if ( userRole.equals ( super.superUserRole ) || userRole.equals ( empresaId ) )
{
Class.forName(super.bdDriver);
- con = DriverManager.getConnection( super.bdUrl, super.bdUsername, super.bdPassword );
+ con = DriverManager.getConnection( bdLocalUrl, bdLocalUsername, bdLocalPassword );
dbQuery = new StringBuffer();
- dbQuery.append( " SELECT "+super.bdEstIdRef+" , "+super.bdEstNomeRef+" FROM estabelecimentos WHERE empresa_id = '"+empresaId+"' order by "+super.bdEstNomeRef);
+ dbQuery.append( " SELECT id, nome FROM estabelecimentos WHERE inactivo <> 'y' AND empresa_id = '"+empresaId+"' order by nome" );
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
diff --git a/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadores.java b/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadores.java
index e9c818c4..25a0fc20 100644
--- a/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadores.java
+++ b/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadores.java
@@ -50,13 +50,13 @@ public class doGetListaTrabalhadores extends siprpServlet{
if ( userRole.equals ( super.superUserRole ) || userRole.equals ( empresaId ) )
{
Class.forName(super.bdDriver);
- con = DriverManager.getConnection( super.bdUrl, super.bdUsername, super.bdPassword );
+ con = DriverManager.getConnection( bdLocalUrl, bdLocalUsername, bdLocalPassword );
if ( super.verificaEstabelecimento(con, empresaId, estabelecimentoId) ) // estabelecimento pertence à empresa ??
{
//Class.forName(super.bdDriver);
//con = DriverManager.getConnection( super.bdUrl, super.bdUsername, super.bdPassword );
dbQuery = new StringBuffer();
- dbQuery.append( " SELECT "+super.bdTrabIdRef+" , "+super.bdTrabNomeRef+" FROM trabalhadores WHERE estabelecimento_id = '"+estabelecimentoId+"' ORDER BY "+super.bdTrabNomeRef);
+ dbQuery.append( " SELECT id, nome FROM trabalhadores WHERE inactivo <> 'y' AND data_demissao IS NULL AND estabelecimento_id = '"+estabelecimentoId+"' ORDER BY nome" );
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
diff --git a/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresPendentes.java b/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresPendentes.java
index 46eca5fb..8af7855e 100644
--- a/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresPendentes.java
+++ b/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresPendentes.java
@@ -23,7 +23,9 @@ import org.apache.velocity.app.*;
public class doGetListaTrabalhadoresPendentes
extends siprpServlet
{
-
+ protected java.util.Date today;
+ protected long todayMillis;
+
/** Creates a new instance of doGetListaTrabalhadores */
public doGetListaTrabalhadoresPendentes(HttpServletRequest req, HttpServletResponse res, boolean print) throws IOException
{
@@ -37,6 +39,9 @@ public class doGetListaTrabalhadoresPendentes
Vector links = new Vector();
Vector desc = new Vector();
Vector descAdicional = new Vector();
+ today = new java.util.Date();
+ todayMillis = today.getTime();
+
try
{
userRole = (String)session.getAttribute(super.sessionUserRole);
@@ -46,89 +51,88 @@ public class doGetListaTrabalhadoresPendentes
if ( userRole.equals ( super.superUserRole ) || userRole.equals ( empresaId ) )
{
Class.forName(super.bdDriver);
- con = DriverManager.getConnection( super.bdUrl, super.bdUsername, super.bdPassword );
+ con = DriverManager.getConnection( bdLocalUrl, bdLocalUsername, bdLocalPassword );
if ( super.verificaEstabelecimento(con, empresaId, estabelecimentoId) ) // estabelecimento pertence à empresa ??
{
//Class.forName(super.bdDriver);
//con = DriverManager.getConnection( super.bdUrl, super.bdUsername, super.bdPassword );
dbQuery = new StringBuffer();
- dbQuery.append( "SELECT id, nome, ( ultima_consulta IS NOT NULL AND realizada = 'y' ),"
- + " ( ultimo_exame IS NOT NULL AND realizado = 'y' ),"
- + " proxima_consulta IS NOT NULL, proximo_exame IS NOT NULL, "
- + " ( proxima_consulta IS NOT NULL AND proxima_consulta - current_date <= 14 ), "
- + " ( proximo_exame IS NOT NULL AND proximo_exame - current_date <= 14 )"
- + " FROM trabalhadores "
- + " WHERE estabelecimento_id = '"+estabelecimentoId+"'"
- + " AND ( ultima_consulta IS NULL OR realizada = 'n' OR"
- + " ( proxima_consulta IS NOT NULL AND proxima_consulta - current_date <= 14 )"
- + " OR ( proximo_exame IS NOT NULL AND proximo_exame - current_date <= 14 ) )"
- + " ORDER BY nome" );
+ dbQuery.append( "SELECT trabalhadores.id, trabalhadores.nome, "
+ + "marcacoes_trabalhador.tipo, marcacoes_trabalhador.data, marcacoes_trabalhador.realizada "
+ + "FROM trabalhadores LEFT JOIN marcacoes_trabalhador ON ( marcacoes_trabalhador.trabalhador_id = trabalhadores.id )"
+ + "WHERE estabelecimento_id = " + estabelecimentoId
+ + " AND trabalhadores.inactivo <> 'y' AND data_demissao IS NULL "
+ + "ORDER BY 2, 3, 4 DESC " );
+// dbQuery.append( "SELECT id, nome, ( ultima_consulta IS NOT NULL AND realizada = 'y' ),"
+// + " ( ultimo_exame IS NOT NULL AND realizado = 'y' ),"
+// + " proxima_consulta IS NOT NULL, proximo_exame IS NOT NULL, "
+// + " ( proxima_consulta IS NOT NULL AND proxima_consulta - current_date <= 14 ), "
+// + " ( proximo_exame IS NOT NULL AND proximo_exame - current_date <= 14 )"
+// + " FROM trabalhadores "
+// + " WHERE estabelecimento_id = '"+estabelecimentoId+"'"
+// + " AND ( ultima_consulta IS NULL OR realizada = 'n' OR"
+// + " ( proxima_consulta IS NOT NULL AND proxima_consulta - current_date <= 14 )"
+// + " OR ( proximo_exame IS NOT NULL AND proximo_exame - current_date <= 14 ) )"
+// + " ORDER BY nome" );
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
-
+
int index=0;
int max = rs.columnLength();
- while ( index < max )
+ Integer trabalhadorID = new Integer( -1 );
+ String nomeTrabalhador = "";
+ Vector consultas = new Vector();
+ Vector exames = new Vector();
+
+ for ( index = 0; index <= max; index++ )
{
- temp=""+rs.get(index,0); // converter de int para String
- dbQuery = new StringBuffer();
- dbQuery.append("/"+super.servletName+"/?"+empresaId+"/"+estabelecimentoId+"/"+temp); // contruir url
- links.add(dbQuery.toString());
- HashMap trabalhador = new HashMap();
- trabalhador.put( "Nome", (String)rs.get(index,1) );
- boolean uc = ( (Boolean)rs.get(index,2) ).booleanValue();
- boolean ue = ( (Boolean)rs.get(index,3) ).booleanValue();
- boolean pc = ( (Boolean)rs.get(index,4) ).booleanValue();
- boolean pe = ( (Boolean)rs.get(index,5) ).booleanValue();
- boolean quase_c = ( (Boolean)rs.get(index,6) ).booleanValue();
- boolean quase_e = ( (Boolean)rs.get(index,7) ).booleanValue();
- if( quase_c )
- {
- trabalhador.put( "Consulta", "yellow" );
- trabalhador.put( "Consulta_estado", "marcado" );
- }
- else if( uc )
- {
- trabalhador.put( "Consulta", "green" );
- trabalhador.put( "Consulta_estado", "tratado" );
- }
- else if( pc )
+ Integer id = index < max ? ( Integer ) rs.get( index, 0 ) : new Integer( -1 );
+ if( !id.equals( trabalhadorID ) )
{
- trabalhador.put( "Consulta", "yellow" );
- trabalhador.put( "Consulta_estado", "marcado" );
+ Object listaConsultas[][] = ( Object[][] ) consultas.toArray( new Object[consultas.size()][2] );
+ Object listaExames[][] = ( Object[][] ) exames.toArray( new Object[exames.size()][2] );
+ if( trabalhadorID.intValue() > -1 &&
+ verificarTrabalhador( listaConsultas, listaExames ) )
+ {
+ temp=""+rs.get(index - 1,0); // converter de int para String
+ dbQuery = new StringBuffer();
+ dbQuery.append("/"+super.servletName+"/?"+empresaId+"/"+estabelecimentoId+"/"+temp); // contruir url
+ links.add(dbQuery.toString());
+ desc.add( criarDadosTrabalhador( con, trabalhadorID, nomeTrabalhador, listaConsultas, listaExames ) );
+ }
+ exames.clear();
+ consultas.clear();
}
- else
+ if( index == max )
{
- trabalhador.put( "Consulta", "red" );
- trabalhador.put( "Consulta_estado", "pendente" );
+ break;
}
-
- if( quase_e )
+ Integer tipo = ( Integer ) rs.get( index, 2 );
+
+ String nome = ( String ) rs.get( index, 1 );
+ java.util.Date data = ( java.util.Date ) rs.get( index, 3 );
+ String realizada = ( String ) rs.get( index, 4 );
+ trabalhadorID = id;
+ nomeTrabalhador = nome;
+ Object marcacao[] = new Object[]{ data, realizada };
+ if( tipo == null )
{
- trabalhador.put( "Exame", "yellow" );
- trabalhador.put( "Exame_estado", "marcado" );
+ continue;
}
- else if( ue )
+ switch( tipo.intValue() )
{
- trabalhador.put( "Exame", "green" );
- trabalhador.put( "Exame_estado", "tratado" );
+ case TIPO_MARCACAO_EXAMES:
+ exames.add( marcacao );
+ break;
+
+ case TIPO_MARCACAO_CONSULTA:
+ consultas.add( marcacao );
+ break;
}
- else if( pe )
- {
- trabalhador.put( "Exame", "yellow" );
- trabalhador.put( "Exame_estado", "marcado" );
- }
- else
- {
- trabalhador.put( "Exame", "red" );
- trabalhador.put( "Exame_estado", "pendente" );
- }
- desc.add( trabalhador );
- ++index;
}
stmt.close();
-
+
sBuffer = new StringBuffer();
sBuffer.append(""+super.nomeEmpresa(con,empresaId)+"
"
+super.nomeEstabelecimento(con, estabelecimentoId)+"" );
@@ -179,4 +183,156 @@ public class doGetListaTrabalhadoresPendentes
}
}
+ protected boolean verificarTrabalhador( Object consultas[][], Object exames[][] )
+ {
+ boolean estadoConsultas = false;
+ boolean estadoExames = ( exames.length == 0 ) || ( ( java.util.Date )exames[ 0 ][ 0 ] ).before(today) ||
+ ( ( ( ( java.util.Date )exames[ 0 ][ 0 ] ).getTime() - todayMillis ) / 86400000 > 14 );
+ if( consultas.length > 0 )
+ {
+ int anterior;
+ int proxima;
+ if( ( (java.util.Date) consultas[ 0 ][ 0 ] ).after( today ) )
+ {
+ proxima = 0;
+ if( consultas.length >= 2 )
+ {
+ anterior = 1;
+ }
+ else
+ {
+ anterior = -1;
+ }
+ }
+ else
+ {
+ proxima = -1;
+ anterior = 0;
+ }
+ estadoConsultas = anterior >= 0 && "y".equals( consultas[ anterior ][ 1 ] ) &&
+ ( proxima == -1 || ( ( ( java.util.Date )consultas[ proxima ][ 0 ] ).getTime() - todayMillis ) / 86400000 > 14 );
+ }
+ return !(estadoConsultas && estadoExames);
+ }
+
+ protected HashMap criarDadosTrabalhador( Connection con, Integer id, String nome,
+ Object consultas[][], Object exames[][] )
+ throws Exception
+ {
+// dbQuery.append( "SELECT id, nome, ( ultima_consulta IS NOT NULL AND realizada = 'y' ),"
+// + " ( ultimo_exame IS NOT NULL AND realizado = 'y' ),"
+// + " proxima_consulta IS NOT NULL, proximo_exame IS NOT NULL, "
+// + " ( proxima_consulta IS NOT NULL AND proxima_consulta - current_date <= 14 ), "
+// + " ( proximo_exame IS NOT NULL AND proximo_exame - current_date <= 14 )"
+// + " FROM trabalhadores "
+// + " WHERE estabelecimento_id = '"+estabelecimentoId+"'"
+// + " AND ( ultima_consulta IS NULL OR realizada = 'n' OR"
+// + " ( proxima_consulta IS NOT NULL AND proxima_consulta - current_date <= 14 )"
+// + " OR ( proximo_exame IS NOT NULL AND proximo_exame - current_date <= 14 ) )"
+// + " ORDER BY nome" );
+ HashMap trabalhador = new HashMap();
+ trabalhador.put( "Nome", nome );
+ boolean uc = false;
+ boolean ue = false;
+ boolean pc = false;
+ boolean pe = false;
+ boolean quase_c = false;
+ boolean quase_e = false;
+ if( consultas.length > 0 )
+ {
+ int anterior;
+ int proxima;
+ if( ( (java.util.Date) consultas[ 0 ][ 0 ] ).after( today ) )
+ {
+ proxima = 0;
+ if( consultas.length >= 2 )
+ {
+ anterior = 1;
+ }
+ else
+ {
+ anterior = -1;
+ }
+ }
+ else
+ {
+ proxima = -1;
+ anterior = 0;
+ }
+ long diff = proxima > -1 ? ( ( ( java.util.Date )consultas[ proxima ][ 0 ] ).getTime() - todayMillis ) / 86400000 : 15;
+ uc = anterior > -1 && "y".equals( consultas[ anterior ][ 1 ] );
+ pc = proxima > -1;
+ quase_c = pc && diff <= 14;
+ }
+
+ if( exames.length > 0 )
+ {
+ int anterior;
+ int proximo;
+ if( ( (java.util.Date) exames[ 0 ][ 0 ] ).after( today ) )
+ {
+ proximo = 0;
+ if( exames.length >= 2 )
+ {
+ anterior = 1;
+ }
+ else
+ {
+ anterior = -1;
+ }
+ }
+ else
+ {
+ proximo = -1;
+ anterior = 0;
+ }
+ long diff = proximo > -1 ? ( ( ( java.util.Date )exames[ proximo ][ 0 ] ).getTime() - todayMillis ) / 86400000 : 15;
+ ue = anterior > -1 && "y".equals( exames[ anterior ][ 1 ] );
+ pe = proximo > -1;
+ quase_e = pe && diff <= 14;
+ }
+
+ if( quase_c )
+ {
+ trabalhador.put( "Consulta", "yellow" );
+ trabalhador.put( "Consulta_estado", "marcado" );
+ }
+ else if( uc )
+ {
+ trabalhador.put( "Consulta", "green" );
+ trabalhador.put( "Consulta_estado", "tratado" );
+ }
+ else if( pc )
+ {
+ trabalhador.put( "Consulta", "yellow" );
+ trabalhador.put( "Consulta_estado", "marcado" );
+ }
+ else
+ {
+ trabalhador.put( "Consulta", "red" );
+ trabalhador.put( "Consulta_estado", "pendente" );
+ }
+
+ if( quase_e )
+ {
+ trabalhador.put( "Exame", "yellow" );
+ trabalhador.put( "Exame_estado", "marcado" );
+ }
+ else if( ue )
+ {
+ trabalhador.put( "Exame", "green" );
+ trabalhador.put( "Exame_estado", "tratado" );
+ }
+ else if( pe )
+ {
+ trabalhador.put( "Exame", "yellow" );
+ trabalhador.put( "Exame_estado", "marcado" );
+ }
+ else
+ {
+ trabalhador.put( "Exame", "red" );
+ trabalhador.put( "Exame_estado", "pendente" );
+ }
+ return trabalhador;
+ }
}
diff --git a/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresTudo.java b/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresTudo.java
index 335cacf1..8e95b30a 100644
--- a/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresTudo.java
+++ b/trunk/WEB-INF/classes/siprp/pagina/doGetListaTrabalhadoresTudo.java
@@ -6,24 +6,31 @@
package siprp.pagina;
-import com.evolute.utils.arrays.*;
-import com.evolute.utils.strings.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import java.lang.reflect.Array;
import javax.servlet.*;
import javax.servlet.http.*;
+
import org.apache.velocity.*;
import org.apache.velocity.app.*;
+
+
+import com.evolute.utils.arrays.*;
+import com.evolute.utils.sql.*;
+import com.evolute.utils.strings.*;
/**
*
* @author fpalma
*/
public class doGetListaTrabalhadoresTudo
- extends siprpServlet
+ extends siprpServlet
+ implements GlobalConstants
{
-
+ protected java.util.Date today;
+ protected long todayMillis;
+
/** Creates a new instance of doGetListaTrabalhadores */
public doGetListaTrabalhadoresTudo(HttpServletRequest req, HttpServletResponse res, boolean print) throws IOException
{
@@ -37,6 +44,9 @@ public class doGetListaTrabalhadoresTudo
Vector links = new Vector();
Vector desc = new Vector();
Vector descAdicional = new Vector();
+ today = new java.util.Date();
+ todayMillis = today.getTime();
+
try
{
userRole = (String)session.getAttribute(super.sessionUserRole);
@@ -46,40 +56,85 @@ public class doGetListaTrabalhadoresTudo
if ( userRole.equals ( super.superUserRole ) || userRole.equals ( empresaId ) )
{
Class.forName(super.bdDriver);
- con = DriverManager.getConnection( super.bdUrl, super.bdUsername, super.bdPassword );
+ con = DriverManager.getConnection( bdLocalUrl, bdLocalUsername, bdLocalPassword );
if ( super.verificaEstabelecimento(con, empresaId, estabelecimentoId) ) // estabelecimento pertence à empresa ??
{
//Class.forName(super.bdDriver);
//con = DriverManager.getConnection( super.bdUrl, super.bdUsername, super.bdPassword );
dbQuery = new StringBuffer();
- dbQuery.append( "SELECT id, nome, data_ficha FROM trabalhadores "
- + "WHERE estabelecimento_id = '"+estabelecimentoId+"'"
- + " AND ultima_consulta IS NOT NULL AND realizada = 'y' AND"
- + " ( proxima_consulta IS NULL OR proxima_consulta - current_date > 14 )"
- + " AND ( proximo_exame IS NULL OR proximo_exame - current_date > 14 )"
- + " ORDER BY nome" );
+// dbQuery.append( "SELECT id, nome, data_ficha FROM trabalhadores "
+// + "WHERE estabelecimento_id = '"+estabelecimentoId+"'"
+// + " AND ultima_consulta IS NOT NULL AND realizada = 'y' AND"
+// + " ( proxima_consulta IS NULL OR proxima_consulta - current_date > 14 )"
+// + " AND ( proximo_exame IS NULL OR proximo_exame - current_date > 14 )"
+// + " ORDER BY nome" );
+ dbQuery.append( "SELECT trabalhadores.id, trabalhadores.nome, "
+ + "marcacoes_trabalhador.tipo, marcacoes_trabalhador.data, marcacoes_trabalhador.realizada "
+ + "FROM trabalhadores, marcacoes_trabalhador "
+ + "WHERE estabelecimento_id = " + estabelecimentoId
+ + " AND marcacoes_trabalhador.trabalhador_id = trabalhadores.id "
+ + " AND trabalhadores.inactivo <> 'y' AND data_demissao IS NULL "
+ + "ORDER BY 2, 3, 4 DESC " );
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
int index=0;
int max = rs.columnLength();
- while ( index < max )
+ Integer trabalhadorID = new Integer( -1 );
+ String nomeTrabalhador = "";
+ Vector consultas = new Vector();
+ Vector exames = new Vector();
+
+ for ( index = 0; index <= max; index++ )
{
- temp=""+rs.get(index,0); // converter de int para String
- dbQuery = new StringBuffer();
- dbQuery.append("/"+super.servletName+"/?"+empresaId+"/"+estabelecimentoId+"/"+temp); // contruir url
- links.add(dbQuery.toString());
- HashMap trabalhador = new HashMap();
- trabalhador.put( "Nome", (String)rs.get(index,1) );
- Object data_ficha = rs.get(index,2);
- if( data_ficha == null )
+ Integer id = index < max ? ( Integer ) rs.get( index, 0 ) : new Integer( -1 );
+ if( !id.equals( trabalhadorID ) )
+ {
+ Object listaConsultas[][] = ( Object[][] ) consultas.toArray( new Object[consultas.size()][2] );
+ Object listaExames[][] = ( Object[][] ) exames.toArray( new Object[exames.size()][2] );
+ if( trabalhadorID.intValue() > -1 &&
+ verificarTrabalhador( listaConsultas, listaExames ) )
+ {
+ temp=""+rs.get(index - 1,0); // converter de int para String
+ dbQuery = new StringBuffer();
+ dbQuery.append("/"+super.servletName+"/?"+empresaId+"/"+estabelecimentoId+"/"+temp); // construir url
+ links.add(dbQuery.toString());
+ java.util.Date dataUltimaConsulta = null;
+ for( int c = 0; c < listaConsultas.length; c++ )
+ {
+ if( "y".equals( listaConsultas[ c ][ 1 ] ) )
+ {
+ dataUltimaConsulta = ( java.util.Date ) listaConsultas[ c ][ 0 ];
+ break;
+ }
+ }
+ desc.add( criarDadosTrabalhador( con, trabalhadorID, nomeTrabalhador, dataUltimaConsulta ) );
+ }
+ exames.clear();
+ consultas.clear();
+ }
+ if( index == max )
+ {
+ break;
+ }
+ Integer tipo = ( Integer ) rs.get( index, 2 );
+ String nome = ( String ) rs.get( index, 1 );
+ java.util.Date data = ( java.util.Date ) rs.get( index, 3 );
+ String realizada = ( String ) rs.get( index, 4 );
+ trabalhadorID = id;
+ nomeTrabalhador = nome;
+ Object marcacao[] = new Object[]{ data, realizada };
+ switch( tipo.intValue() )
{
- data_ficha = "";
+ case TIPO_MARCACAO_EXAMES:
+ exames.add( marcacao );
+ break;
+
+ case TIPO_MARCACAO_CONSULTA:
+ consultas.add( marcacao );
+ break;
}
- trabalhador.put( "Data", data_ficha );
- desc.add( trabalhador );
- ++index;
}
stmt.close();
@@ -132,6 +187,60 @@ public class doGetListaTrabalhadoresTudo
out.println( mergeTemplate( super.msgGenericError , super.errorTemplate) );
}
}
-
+
+ protected boolean verificarTrabalhador( Object consultas[][], Object exames[][] )
+ {
+ boolean estadoConsultas = false;
+ boolean estadoExames = ( exames.length == 0 ) || ( ( java.util.Date )exames[ 0 ][ 0 ] ).before(today) ||
+ ( ( ( ( java.util.Date )exames[ 0 ][ 0 ] ).getTime() - todayMillis ) / 86400000 > 14 );
+ if( consultas.length > 0 )
+ {
+ int anterior;
+ int proxima;
+ if( ( (java.util.Date) consultas[ 0 ][ 0 ] ).after( today ) )
+ {
+ proxima = 0;
+ if( consultas.length >= 2 )
+ {
+ anterior = 1;
+ }
+ else
+ {
+ anterior = -1;
+ }
+ }
+ else
+ {
+ proxima = -1;
+ anterior = 0;
+ }
+ estadoConsultas = anterior >= 0 && "y".equals( consultas[ anterior ][ 1 ] ) &&
+ ( proxima == -1 || ( ( ( java.util.Date )consultas[ proxima ][ 0 ] ).getTime() - todayMillis ) / 86400000 > 14 );
+ }
+ return estadoConsultas && estadoExames;
+ }
+
+ protected HashMap criarDadosTrabalhador( Connection con, Integer id, String nome, java.util.Date ultimaConsulta )
+ throws Exception
+ {
+ HashMap trabalhador = new HashMap();
+ trabalhador.put( "Nome", nome );
+ Select select =
+ new Select( new String[]{ "exames" }, new String[]{ "data" },
+ new Field( "trabalhador_id" ).isEqual( id ).and(
+ new Field( "data" ).isGreaterOrEqual( ultimaConsulta ) ),
+ new String[]{ "data" }, null );
+
+ Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ ResultSet2DArray rs = new ResultSet2DArray( stmt.executeQuery( select.toString() ) );
+ Object data_ficha = rs.columnLength() > 0 ? rs.get( 0, 0 ) : null;
+ stmt.close();
+ if( data_ficha == null )
+ {
+ data_ficha = "";
+ }
+ trabalhador.put( "Data", data_ficha );
+ return trabalhador;
+ }
}
diff --git a/trunk/WEB-INF/classes/siprp/pagina/doGetTrabalhador.java b/trunk/WEB-INF/classes/siprp/pagina/doGetTrabalhador.java
index aece1d8f..19e27d4c 100644
--- a/trunk/WEB-INF/classes/siprp/pagina/doGetTrabalhador.java
+++ b/trunk/WEB-INF/classes/siprp/pagina/doGetTrabalhador.java
@@ -26,6 +26,7 @@ public class doGetTrabalhador extends siprpServlet
HttpSession session = req.getSession(false);
Vector names = new Vector();
Vector values = new Vector();
+ java.util.Date today = new java.util.Date();
try
{
@@ -35,7 +36,7 @@ public class doGetTrabalhador extends siprpServlet
trabalhadorId = (String)session.getAttribute(super.sessionTrabalhadorId);
Class.forName(super.bdDriver);
- con = DriverManager.getConnection( super.bdUrl, super.bdUsername, super.bdPassword );
+ con = DriverManager.getConnection( bdLocalUrl, bdLocalUsername, bdLocalPassword );
if ( ( userRole.equals ( super.superUserRole ) || userRole.equals ( empresaId ) )
&& super.verificaEstabelecimento(con, empresaId, estabelecimentoId)
@@ -43,7 +44,8 @@ public class doGetTrabalhador extends siprpServlet
{
dbQuery = new StringBuffer();
- dbQuery.append( " SELECT * FROM trabalhadores where id='"+trabalhadorId+"'");
+ dbQuery.append( " SELECT sexo, categoria, data_nascimento, nome, numero_mecanografico "
+ + "FROM trabalhadores where id='"+trabalhadorId+"'");
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
@@ -59,69 +61,192 @@ public class doGetTrabalhador extends siprpServlet
hmFuncionario.put( "data_nascimento", rs.get( 0, "data_nascimento" ) );
hmFuncionario.put( "nome", rs.get( 0, "nome" ) );
hmFuncionario.put( "numero", rs.get( 0, "numero_mecanografico" ) );
- hmFuncionario.put( "ultimo_exame", rs.get( 0, "ultimo_exame" ) );
- hmFuncionario.put( "resultado", rs.get( 0, "resultado" ) );
- tmp = ( String ) rs.get( 0, "realizado" );
- if( tmp != null )
+ stmt.close();
+
+ String query = "SELECT id, data, realizada, data_relatorio FROM marcacoes_trabalhador "
+ + "WHERE tipo = 0 and trabalhador_id = " + trabalhadorId
+ + " ORDER BY data DESC";
+ stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ rs = new ResultSet2DArray( stmt.executeQuery( query ) );
+ if( rs.columnLength() > 0 )
{
- if( tmp.equals( "n" ) )
+ java.util.Date dataExame2 = ( java.util.Date ) rs.get( 0, 1 );
+ String realizado2 = ( String ) rs.get( 0, 2 );
+ java.util.Date dataExame1;
+ String realizado1;
+ if( rs.columnLength() > 1 )
{
- hmFuncionario.put( "realizado", "não" );
+ dataExame1 = ( java.util.Date ) rs.get( 1, 1 );
+ realizado1 = ( String ) rs.get( 1, 2 );
}
- else if( tmp.equals( "s" ) || tmp.equals( "y" ) )
+ else
{
- hmFuncionario.put( "realizado", "sim" );
+ dataExame1 = dataExame2;
+ realizado1 = realizado2;
}
+ if( "y".equals( realizado2 ) || today.after( dataExame2 ) )
+ {
+ hmFuncionario.put( "ultimo_exame", dataExame2 );
+ if( realizado2.equals( "n" ) )
+ {
+ realizado2 = "não";
+ }
+ else if( realizado2.equals( "s" ) || realizado2.equals( "y" ) )
+ {
+ realizado2 = "sim";
+ }
+ hmFuncionario.put( "realizado", realizado2 );
+ hmFuncionario.put( "proximo_exame", null );
+ }
+ else
+ {
+ hmFuncionario.put( "proximo_exame", dataExame2 );
+ if( !dataExame2.equals( dataExame1 ) )
+ {
+ hmFuncionario.put( "ultimo_exame", dataExame1 );
+ if( realizado1.equals( "n" ) )
+ {
+ realizado1 = "não";
+ }
+ else if( realizado1.equals( "s" ) || realizado1.equals( "y" ) )
+ {
+ realizado1 = "sim";
+ }
+ hmFuncionario.put( "realizado", realizado1 );
+ }
+ else
+ {
+ hmFuncionario.put( "ultimo_exame", null );
+ hmFuncionario.put( "realizado", null );
+ }
+ }
+ }
+ else
+ {
+ hmFuncionario.put( "ultimo_exame", null );
+ hmFuncionario.put( "realizado", null );
+ hmFuncionario.put( "proximo_exame", null );
}
- hmFuncionario.put( "proximo_exame", rs.get( 0, "proximo_exame" ) );
- hmFuncionario.put( "ultima_consulta", rs.get( 0, "ultima_consulta" ) );
- tmp = ( String ) rs.get( 0, "realizada" );
- if( tmp != null )
+ stmt.close();
+
+ query = "SELECT MAX(id) FROM exames WHERE trabalhador_id = " + trabalhadorId + " AND inactivo <> 'y'";
+ stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ rs = new ResultSet2DArray( stmt.executeQuery( query ) );
+ Integer fichaId = null;
+ if( rs.columnLength() > 0 )
{
- if( tmp.equals( "n" ) )
+ fichaId = ( Integer ) rs.get( 0, 0 );
+ }
+ stmt.close();
+
+ if( fichaId != null )
+ {
+ query = "SELECT data, resultado FROM exames WHERE id = " + fichaId;
+ stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ rs = new ResultSet2DArray( stmt.executeQuery( query ) );
+ Integer resultadoFicha = (Integer) rs.get( 0, 1 );
+ stmt.close();
+ if( resultadoFicha != null )
{
- hmFuncionario.put( "realizada", "n\u00E3o" );
+ switch( resultadoFicha.intValue() )
+ {
+ case 1:
+ hmFuncionario.put( "resultado", "Apto" );
+ break;
+ case 2:
+ hmFuncionario.put( "resultado", "Apto Condicionalmente" );
+ break;
+ case 3:
+ hmFuncionario.put( "resultado", "Inapto Temporariamente" );
+ break;
+ case 4:
+ hmFuncionario.put( "resultado", "Inapto Definitivamente" );
+ break;
+ default:
+ hmFuncionario.put( "resultado", null );
+ }
}
- else if( tmp.equals( "s" ) || tmp.equals( "y" ) )
+ else
{
- hmFuncionario.put( "realizada", "sim" );
+ hmFuncionario.put( "resultado", null );
}
}
- hmFuncionario.put( "proxima_consulta", rs.get( 0, "proxima_consulta" ) );
+ else
+ {
+ hmFuncionario.put( "resultado", null );
+ }
+
+ query = "SELECT id, data, realizada FROM marcacoes_trabalhador "
+ + "WHERE tipo = 1 and trabalhador_id = " + trabalhadorId
+ + " ORDER BY data DESC";
+ stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ rs = new ResultSet2DArray( stmt.executeQuery( query ) );
+ if( rs.columnLength() > 0 )
+ {
+ java.util.Date dataConsulta2 = ( java.util.Date ) rs.get( 0, 1 );
+ String realizada2 = ( String ) rs.get( 0, 2 );
+ java.util.Date dataConsulta1;
+// java.util.Date dataRelatorio1;
+// java.util.Date dataRelatorio2 = (java.util.Date) rs.get( 0, 3 );
+ String realizada1;
+ if( rs.columnLength() >= 2 )
+ {
+ dataConsulta1 = ( java.util.Date ) rs.get( 1, 1 );
+ realizada1 = ( String ) rs.get( 1, 2 );
+// dataRelatorio1 = (java.util.Date) rs.get( 1, 3 );
+ }
+ else
+ {
+ dataConsulta1 = dataConsulta2;
+ realizada1 = realizada2;
+// dataRelatorio1 = dataRelatorio2;
+ }
+ if( "y".equals( realizada2 ) || today.after( dataConsulta2 ) )
+ {
+ hmFuncionario.put( "ultima_consulta", dataConsulta2 );
+ if( realizada2.equals( "n" ) )
+ {
+ realizada2 = "não";
+ }
+ else if( realizada2.equals( "s" ) || realizada2.equals( "y" ) )
+ {
+ realizada2 = "sim";
+ }
+ hmFuncionario.put( "realizada", realizada2 );
+ hmFuncionario.put( "proxima_consulta", null );
+ }
+ else
+ {
+ hmFuncionario.put( "proxima_consulta", dataConsulta2 );
+ if( !dataConsulta2.equals( dataConsulta1 ) )
+ {
+ if( realizada1.equals( "n" ) )
+ {
+ realizada1 = "não";
+ }
+ else if( realizada1.equals( "s" ) || realizada1.equals( "y" ) )
+ {
+ realizada1 = "sim";
+ }
+ hmFuncionario.put( "realizada", realizada1 );
+ hmFuncionario.put( "ultima_consulta", dataConsulta1 );
+ }
+ else
+ {
+ hmFuncionario.put( "ultima_consulta", null );
+ hmFuncionario.put( "realizada", null );
+ }
+ }
+ }
+ else
+ {
+ hmFuncionario.put( "ultima_consulta", null );
+ hmFuncionario.put( "realizada", null );
+ hmFuncionario.put( "proxima_consulta", null );
+ }
+ stmt.close();
}
- // while ( index < max )
- // {
- // dbQuery = new StringBuffer();
- // dbQuery.append( " SELECT "+super.trabalhadorDescFields[index][1]+" FROM trabalhadores where id='"+trabalhadorId+"'");
- // stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
- // rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
- // names.add(trabalhadorDescFields[index][0]);
- //
- // if (rs.get(0,0) == null )
- // {
- // values.add(super.bdNullString);
- // }
- // else
- // {
- //// values.add(rs.get(0,0).toString());
- // temp=rs.get(0,0).toString();
- //
- // if ( temp.equals("n") )
- // {
- // temp="n\u00E3o";
- // }
- // else if ( temp.equals("y") )
- // {
- // temp="sim";
- // }
- // values.add(temp); }
- //
- // ++index;
- //
- // }
- stmt.close();
-
sBuffer = new StringBuffer();
sBuffer.append(""+super.nomeEmpresa(con,empresaId)+"
"
+super.nomeEstabelecimento(con, estabelecimentoId)+"" );
diff --git a/trunk/WEB-INF/classes/siprp/pagina/siprpServlet.java b/trunk/WEB-INF/classes/siprp/pagina/siprpServlet.java
index a95e44b0..c73c81f7 100644
--- a/trunk/WEB-INF/classes/siprp/pagina/siprpServlet.java
+++ b/trunk/WEB-INF/classes/siprp/pagina/siprpServlet.java
@@ -468,8 +468,9 @@ System.out.println( "query: " + queryString );
try
{
dbQuery = new StringBuffer();
- dbQuery.append( "SELECT "+bdEmailEmpresa+" FROM empresas WHERE "+bdEmpresaIdRef+" ='"+empresaId+"'");
- stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ dbQuery.append( "SELECT email FROM empresas, contactos "
+ + "WHERE empresas.id ='"+empresaId+"' AND empresas.contacto_1 = contactos.id");
+ stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
if( rs.columnLength() > 0 )
{
@@ -498,9 +499,9 @@ System.out.println( "query: " + queryString );
try
{
- dbQuery = new StringBuffer();
- dbQuery.append( "SELECT "+bdEmpresaNomeRef+" FROM empresas WHERE "+bdEmpresaIdRef+" ='"+empresaId+"'");
- stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ dbQuery = new StringBuffer();
+ dbQuery.append( "SELECT designacao_social FROM empresas WHERE id ='"+empresaId+"'");
+ stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
if( rs.columnLength() > 0 )
{
@@ -513,7 +514,7 @@ System.out.println( "query: " + queryString );
return null;
}
}
- catch ( Exception e )
+ catch ( Exception e )
{
e.printStackTrace();
}
@@ -530,7 +531,7 @@ System.out.println( "query: " + queryString );
try
{
dbQuery = new StringBuffer();
- dbQuery.append( "SELECT "+bdEstNomeRef+" FROM estabelecimentos WHERE "+bdEstIdRef+" ='"+estabelecimentoId+"'");
+ dbQuery.append( "SELECT nome FROM estabelecimentos WHERE id ='"+estabelecimentoId+"'");
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
if( rs.columnLength() > 0 )
@@ -561,7 +562,7 @@ System.out.println( "query: " + queryString );
try
{
dbQuery = new StringBuffer();
- dbQuery.append( "SELECT "+bdTrabNomeRef+" FROM trabalhadores where id='"+trabalhadorId+"'");
+ dbQuery.append( "SELECT nome FROM trabalhadores where id='"+trabalhadorId+"'");
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
if( rs.columnLength() > 0 )