You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

224 lines
8.3 KiB

package com.evolute.siprp.pagina;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.evolute.utils.arrays.ResultSet2DArray;
public class doGetTrabalhador extends siprpServlet
{
private static final long serialVersionUID = 1L;
private ResultSet2DArray executeQuery( Connection con, String query ) throws Exception
{
Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
ResultSet2DArray rs = new ResultSet2DArray( stmt.executeQuery( query ) );
rs.getObjects();
stmt.close();
return rs;
}
public doGetTrabalhador( HttpServletRequest req, HttpServletResponse res ) throws IOException
{
ServletOutputStream out = res.getOutputStream();
Connection con = null;
Statement stmt = null;
ResultSet2DArray rs;
StringBuffer dbQuery, sBuffer;
String userRole;
String empresaId;
String estabelecimentoId;
String trabalhadorId;
HttpSession session = req.getSession( false );
try
{
userRole = ( String ) session.getAttribute( sessionUserRole );
empresaId = ( String ) session.getAttribute( sessionEmpresaId );
estabelecimentoId = ( String ) session.getAttribute( sessionEstabelecimentoId );
trabalhadorId = ( String ) session.getAttribute( sessionTrabalhadorId );
Class.forName( bdDriver );
con = DriverManager.getConnection( bdLocalUrl, bdLocalUsername, bdLocalPassword );
if ( ( userRole.equals( superUserRole ) || userRole.equals( empresaId ) ) && verificaEstabelecimento( con, empresaId, estabelecimentoId )
&& verificaTrabalhador( con, estabelecimentoId, trabalhadorId ) )
{
dbQuery = new StringBuffer();
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() ) );
Map< String, Object > hmFuncionario = new HashMap< String, Object >();
if ( rs.columnLength() > 0 )
{
hmFuncionario.put( "sexo", rs.get( 0, "sexo" ) );
hmFuncionario.put( "categoria", rs.get( 0, "categoria" ) );
hmFuncionario.put( "data_nascimento", rs.get( 0, "data_nascimento" ) );
hmFuncionario.put( "nome", rs.get( 0, "nome" ) );
hmFuncionario.put( "numero", rs.get( 0, "numero_mecanografico" ) );
stmt.close();
/** dados de exames **/
String queryUltimo = "select id, data, estado " + "from marcacoes_trabalhador "
+ "where deleted_stamp is null and tipo = 0 and estado = 2 and trabalhador_id = " + trabalhadorId + " order by data desc " + "limit 1";
rs = executeQuery( con, queryUltimo );
java.util.Date dataUltimoExameRealizado = null;
String realizado = "";
if ( rs.columnLength() > 0 )
{
dataUltimoExameRealizado = ( java.util.Date ) rs.get( 0, 1 );
realizado = "Sim";
}
java.util.Date dataProximoExame = null;
String queryProximo = "select id, data, estado " + "from marcacoes_trabalhador "
+ "where deleted_stamp is null and tipo = 0 and estado != 2 and data >= now() and trabalhador_id = " + trabalhadorId + " "
+ "order by data desc " + "limit 1";
rs = executeQuery( con, queryProximo );
if ( rs.columnLength() > 0 )
{
dataProximoExame = ( java.util.Date ) rs.get( 0, 1 );
}
hmFuncionario.put( "ultimo_exame", dataUltimoExameRealizado == null ? "" : dataUltimoExameRealizado );
hmFuncionario.put( "realizado", realizado );
hmFuncionario.put( "proximo_exame", dataProximoExame == null ? "" : dataProximoExame );
/** eof dados exames **/
String 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 )
{
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 )
{
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
{
hmFuncionario.put( "resultado", null );
}
}
else
{
hmFuncionario.put( "resultado", null );
}
/** consulta dados **/
String queryUltima = "select id, data, estado " + "from marcacoes_trabalhador "
+ "where deleted_stamp is null and tipo = 1 and estado = 2 and trabalhador_id = " + trabalhadorId + " " + "order by data desc "
+ "limit 1";
rs = executeQuery( con, queryUltima );
java.util.Date dataUltimaConsultaRealizada = null;
String consultaRealizada = "";
if ( rs.columnLength() > 0 )
{
dataUltimaConsultaRealizada = ( java.util.Date ) rs.get( 0, 1 );
consultaRealizada = "Sim";
}
String queryProxima = "select id, data, estado " + "from marcacoes_trabalhador "
+ "where deleted_stamp is null and tipo = 1 and estado != 2 and data >= now() and trabalhador_id = " + trabalhadorId + " "
+ "order by data desc " + "limit 1";
rs = executeQuery( con, queryProxima );
java.util.Date dataProximaConsulta = null;
if ( rs.columnLength() > 0 )
{
dataProximaConsulta = ( java.util.Date ) rs.get( 0, 1 );
}
hmFuncionario.put( "ultima_consulta", dataUltimaConsultaRealizada == null ? "" : dataUltimaConsultaRealizada );
hmFuncionario.put( "realizada", consultaRealizada );
hmFuncionario.put( "proxima_consulta", dataProximaConsulta == null ? "" : dataProximaConsulta );
/** eof consulta dados **/
}
sBuffer = new StringBuffer();
sBuffer.append( "<b>" + nomeEmpresa( con, empresaId ) + "</b><br><br><i>" + nomeEstabelecimento( con, estabelecimentoId ) + "</i>" );
Map< String, Object > hmValues = new HashMap< String, Object >();
hmValues.put( "empresa_nome", session.getAttribute( sessionCompanyName ) );
hmValues.put( "empresa_id", session.getAttribute( sessionEmpresaId ) );
hmValues.put( "estabelecimento_nome", nomeEstabelecimento( con, estabelecimentoId ) );
/* Dados para marcacao de consulta/exame */
session.setAttribute( "session_estabelecimento_nome", hmValues.get( "estabelecimento_nome" ) );
session.setAttribute( "session_funcionario_nome", hmFuncionario.get( "nome" ) );
session.setAttribute( "session_funcionario_numero", hmFuncionario.get( "numero" ) );
hmValues.put( "estabelecimento_id", estabelecimentoId );
hmValues.put( "userRole", userRole );
hmValues.put( "userName", session.getAttribute( sessionUser ) );
hmValues.put( msgTemplate, sBuffer.toString() );
hmValues.put( templateUserRole, userRole );
hmValues.put( templateQuery, queryStringTrabalhador );
hmValues.put( "funcionario", hmFuncionario );
out.println( mergeTemplate( hmValues, authenticatedUserTemplate ) );
}
else
{
out.println( mergeTemplate( msgLinkFormatError, userRole, errorTemplate ) );
}
con.close();
}
catch ( SQLException e )
{
e.printStackTrace();
out.println( mergeTemplate( msgErroBd, errorTemplate ) );
}
catch ( Exception e )
{
e.printStackTrace();
out.println( mergeTemplate( msgGenericError, errorTemplate ) );
}
}
}