Fala pessoal.
Sou um aprendiz em JAVA, principalmente trabalhando junto com banco de dados.
Estou tentando desenvolver um sistema simples pra registro de ponto pros colaboradores da loja que eu trabalho.
A parte dos registros já está ok. Mas me surgiu uma grande dificuldade na hora de calcular os saldos.
Estou fazendo o seguinte:
- Durante o registro do ponto de fim de expediente, consulto o horário do registro de entrada desse mesmo expediente. (Exemplo: Entrada e Saída - Manhã)
- Na consulta, atribuo o DataHora a uma variável do tipo Timestamp.
Abaixo o meu código:
//METODO DE CONSULTA
public List selectRegistros(int ope, int colab, String where) {
List lRegistro = new ArrayList<>();
String sql = Strings.selectRegistros + where;
System.out.println(sql);
try {
ResultSet result;
PreparedStatement p = con.getConnection().prepareStatement(sql);
System.out.println(p);
result = p.executeQuery();
while(result.next()) {
Registro registro = new Registro();
registro.setId(result.getInt("r.id_registro"));
registro.setId_colab(result.getInt("r.id_colab"));
registro.setId_oper(result.getInt("r.id_oper"));
registro.setData(result.getTimestamp("r.data_hora"));
registro.setStatus(result.getString("r.sta"));
lRegistro.add(registro);
System.out.println(lRegistro);
}
p.close();
System.out.println("Sucesso, Malucão!");
} catch (Exception e) {
System.out.println(e);
}
return lRegistro;
}
//METODO QUE RETORNA A DATA DE ABERTURA DO EXPEDIENTE
public Timestamp buscaAberturaSaldo(int colab, int ope) throws Exception {
ConnectionFactory con = new ConnectionFactory();
RegistroDao rDao = new RegistroDao(con);
ColaboradorDAO cDao = new ColaboradorDAO(con);
Timestamp data_hora = null;
int id_operacao = 0;
String data = Util.pegaData("yyyy-MM-dd");
if(ope == 2 || ope == 4 || ope == 6 || ope == 8) {
if(ope == 2)
id_operacao = 1;
else if(ope == 4)
id_operacao = 3;
else if(ope == 6)
id_operacao = 5;
else
id_operacao = 7;
String where = "r.id_colab = "+ colab + " AND r.id_oper = "+ id_operacao +" AND r.data_hora < '"+ data +" 23:59:59'";
rDao.selectRegistros(colab, ope, where);
try {
for(Registro r: rDao.selectRegistros(colab, ope, where))
data_hora = r.getData();
}catch (Exception e) {
// TODO: handle exception
}
}
return data_hora;
}
//METODO DE CALCULO DE SALDO (TIVE FÉ QUE O SINAL DE SUBTRAÇÃO RESOLVERIA KK)
public Timestamp calculaSaldo(int colab, int ope, Timestamp saldoFim ) {
Consultas sql = new Consultas();
Timestamp resultadoSaldo;
try {
resultadoSaldo = (saldoFim - sql.buscaAberturaSaldo(colab, ope));
}catch (Exception e) {
// TODO: handle exception
}
return resultadoSaldo;
}
Procurei sobre uma outra possibilidade e não sei se o Timestamp é o tipo ideal que eu deveria trabalhar, ou se existe alguma possibilidade não tão complexa.
Espero que possam me ajudar e valeu!!