gleimar 2013-02-22 17:23:13 +00:00
parent 636e7db222
commit 4b38ff1eb8
5 changed files with 123 additions and 95 deletions

View File

@ -55,6 +55,7 @@ import com.rjconsultores.ventaboletos.service.FeriadoService;
import com.rjconsultores.ventaboletos.service.RutaService;
import com.rjconsultores.ventaboletos.service.TramoServicioService;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.utilerias.HoraSistema;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
/**
@ -260,13 +261,10 @@ public class CorridaServiceImpl implements CorridaService {
gHoraChegada.setTime(horaChegada);
for (TramoServicio ts : lsTramoServicio) {
HoraSistema hs = new HoraSistema(ts.getTiemporecorrido());
GregorianCalendar gTiemporecorrido = new GregorianCalendar();
gTiemporecorrido.setTime(ts.getTiemporecorrido());
gHoraChegada.set(Calendar.HOUR_OF_DAY, gHoraChegada.get(Calendar.HOUR_OF_DAY) + gTiemporecorrido.get(Calendar.HOUR_OF_DAY));
gHoraChegada.set(Calendar.MINUTE, gHoraChegada.get(Calendar.MINUTE) + gTiemporecorrido.get(Calendar.MINUTE));
gHoraChegada.add(Calendar.HOUR_OF_DAY, hs.getHora());
gHoraChegada.add(Calendar.MINUTE, hs.getMinuto());
}
return gHoraChegada.getTime();
@ -285,9 +283,11 @@ public class CorridaServiceImpl implements CorridaService {
log.debug("Tempo Recorrido : " + sdf.format(gHoraSaidaProximo.getTime()));
if (tiempoEstanciaAnterior != null) {
gHoraSaidaProximo.add(Calendar.MINUTE, tiempoEstanciaAnterior.getMinutes());
gHoraSaidaProximo.add(Calendar.HOUR_OF_DAY, tiempoEstanciaAnterior.getHours());
System.out.println("Tempo Recorrido + Estancia: " + sdf.format(gHoraSaidaProximo.getTime()));
log.debug("Tempo Recorrido + Estancia: " + sdf.format(gHoraSaidaProximo.getTime()));
}
horaSaida = gHoraSaidaProximo.getTime();

View File

@ -28,7 +28,7 @@ import com.rjconsultores.ventaboletos.service.RutaService;
import com.rjconsultores.ventaboletos.service.TramoRutaService;
import com.rjconsultores.ventaboletos.service.TramoService;
import com.rjconsultores.ventaboletos.service.TramoServicioService;
import com.rjconsultores.ventaboletos.utilerias.DateUtil.Hora;
import com.rjconsultores.ventaboletos.utilerias.HoraSistema;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.vo.esquemaoperacional.RutaTramoVO;
import com.rjconsultores.ventaboletos.vo.esquemaoperacional.SecuenciaRutaTramoVO;
@ -259,7 +259,7 @@ public class TramoRutaServiceImpl implements TramoRutaService {
SecuenciaRutaTramoVO secuenciaInicial = lsSecuenciaRutaTramoVO.get(i);
Parada origen = secuenciaInicial.getOrigen();
BigDecimal totalKmsReal = secuenciaInicial.getKmReal();
Hora totalTiempoRecorrido = secuenciaInicial.getTiempoRecorrido();
HoraSistema totalTiempoRecorrido = secuenciaInicial.getTiempoRecorrido();
boolean primeraCombinacion = true;
int j = i + 1;
for (; j < (qtdTramos); j++) {
@ -279,7 +279,7 @@ public class TramoRutaServiceImpl implements TramoRutaService {
log.debug("TRAMO EXISTE");
nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal());
nuevaSecuencia.setTiempoRecorrido(new Hora(tramoServicio.getTiemporecorrido()));
nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido()));
nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId());
nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId());
@ -310,7 +310,7 @@ public class TramoRutaServiceImpl implements TramoRutaService {
log.debug("TRAMO EXISTE");
nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal());
nuevaSecuencia.setTiempoRecorrido(new Hora(tramoServicio.getTiemporecorrido()));
nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido()));
nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId());
nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId());
}

View File

@ -388,8 +388,8 @@ public final class DateUtil {
* @param dtFim
* @return
*/
public static Hora getHorasMinutosByInicio(Date dtFim) {
return new Hora(dtFim);
public static HoraSistema getHorasMinutosByInicio(Date dtFim) {
return new HoraSistema(dtFim);
}
/**
@ -503,77 +503,4 @@ public final class DateUtil {
return gcalendar.getTime();
}
public static class Hora {
private Integer hora;
private Integer minuto;
public Hora() {
this.hora = 0;
this.minuto = 0;
}
public Hora(Date fecha) {
conf(fecha);
}
private void conf(Date fecha) {
Long tempo = DateUtil.getElapsedMinutos(DateUtil.getFecInicio().getTime(), fecha);
long minutos = (tempo % 60);
int horas = (tempo.intValue() / 60);
hora = horas;
minuto = (int) minutos;
}
@Override
public String toString() {
return (hora + ":" + ((String.valueOf(minuto).length() < 2) ? "0" + minuto : minuto));
}
public Integer getHora() {
return hora;
}
public Integer getMinuto() {
return minuto;
}
public void setMinuto(Integer minuto) {
this.minuto = minuto;
}
public void setHora(Integer hora) {
this.hora = hora;
}
public Date getFecha() {
Calendar c = getFecInicio();
c.add(Calendar.HOUR_OF_DAY, hora);
c.add(Calendar.MINUTE, minuto);
return c.getTime();
}
public Hora sumar(Hora horaAdicao) {
Calendar horaAtual = Calendar.getInstance();
horaAtual.setTime(getFecha());
Calendar horaSomar = Calendar.getInstance();
horaSomar.setTime(horaAdicao.getFecha());
int horaTotal = horaAtual.get(Calendar.HOUR_OF_DAY) + horaSomar.get(Calendar.HOUR_OF_DAY);
int minutoTotal = horaAtual.get(Calendar.MINUTE) + horaSomar.get(Calendar.MINUTE);
Calendar fecInicio = getFecInicio();
fecInicio.add(Calendar.HOUR_OF_DAY, horaTotal);
fecInicio.add(Calendar.MINUTE, minutoTotal);
return new Hora(fecInicio.getTime());
}
}
}

View File

@ -0,0 +1,101 @@
package com.rjconsultores.ventaboletos.utilerias;
import java.util.Calendar;
import java.util.Date;
/**
* Classe criada para realizar operações sobre a hora inicial do sistema.<br/>
*
* A hora inicial do sistema pode ser obtida pelo método DateUtil.getFecInicio() e retorna : YEAR, 1970; DAY_OF_MONTH, 1; MONTH, 0; HOUR_OF_DAY, 0;MINUTE, 0; <br/>
* MILLISECOND, 0; SECOND, 0. <br/>
*
*
* Assim é possível armazenar e somar tempos como 24:30 + 36:00 = 60 horas e 30 minutos
*
* @author gleimar
*
*/
public class HoraSistema {
private Integer hora;
private Integer minuto;
public HoraSistema() {
this.hora = 0;
this.minuto = 0;
}
public HoraSistema(Date fecha) {
conf(fecha);
}
private void conf(Date fecha) {
Long tempo = DateUtil.getElapsedMinutos(DateUtil.getFecInicio().getTime(), fecha);
long minutos = (tempo % 60);
int horas = (tempo.intValue() / 60);
hora = horas;
minuto = (int) minutos;
}
@Override
public String toString() {
return (hora + ":" + ((String.valueOf(minuto).length() < 2) ? "0" + minuto : minuto));
}
public Integer getHora() {
return hora;
}
public Integer getMinuto() {
return minuto;
}
public void setMinuto(Integer minuto) {
this.minuto = minuto;
}
public void setHora(Integer hora) {
this.hora = hora;
}
public Date getFecha() {
Calendar c = DateUtil.getFecInicio();
c.add(Calendar.HOUR_OF_DAY, hora);
c.add(Calendar.MINUTE, minuto);
return c.getTime();
}
/**
* Realiza a soma da hora/minuto atual com o informado no parametro
*
* @param horaAdicao
* @return
*/
public HoraSistema sumar(HoraSistema horaAdicao) {
Calendar horaAtual = Calendar.getInstance();
horaAtual.setTime(getFecha());
Calendar horaSomar = Calendar.getInstance();
horaSomar.setTime(horaAdicao.getFecha());
int horaTotal = horaAtual.get(Calendar.HOUR_OF_DAY) + horaSomar.get(Calendar.HOUR_OF_DAY);
int minutoTotal = horaAtual.get(Calendar.MINUTE) + horaSomar.get(Calendar.MINUTE);
int cantDiasAtual = DateUtil.getElapsedDias(DateUtil.getFecInicio().getTime(), horaAtual.getTime());
int cantDiasSumar = DateUtil.getElapsedDias(DateUtil.getFecInicio().getTime(), horaSomar.getTime());
Calendar fecInicio = DateUtil.getFecInicio();
fecInicio.add(Calendar.HOUR_OF_DAY, horaTotal);
fecInicio.add(Calendar.MINUTE, minutoTotal);
fecInicio.add(Calendar.DATE, cantDiasAtual);
fecInicio.add(Calendar.DATE, cantDiasSumar);
return new HoraSistema(fecInicio.getTime());
}
}

View File

@ -4,7 +4,7 @@ import java.math.BigDecimal;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Via;
import com.rjconsultores.ventaboletos.utilerias.DateUtil.Hora;
import com.rjconsultores.ventaboletos.utilerias.HoraSistema;
public class SecuenciaRutaTramoVO {
@ -13,12 +13,12 @@ public class SecuenciaRutaTramoVO {
private Via via;
private Integer secuencia;
private BigDecimal kmReal;
private Hora tiempoRecorrido;
private HoraSistema tiempoRecorrido;
private Integer tramoId;
private Integer tramoServicioId;
public SecuenciaRutaTramoVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal,
Hora tiempoRecorrido) {
HoraSistema tiempoRecorrido) {
super();
this.origen = origen;
this.destino = destino;
@ -38,7 +38,7 @@ public class SecuenciaRutaTramoVO {
}
public SecuenciaRutaTramoVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal,
Hora tiempoRecorrido, Integer tramoId, Integer tramoServicioId) {
HoraSistema tiempoRecorrido, Integer tramoId, Integer tramoServicioId) {
super();
this.origen = origen;
this.destino = destino;
@ -62,13 +62,13 @@ public class SecuenciaRutaTramoVO {
return destino;
}
public Hora getTiempoRecorrido() {
public HoraSistema getTiempoRecorrido() {
return tiempoRecorrido;
}
public void setTiempoRecorrido(Hora tiempoRecorrido) {
public void setTiempoRecorrido(HoraSistema tiempoRecorrido) {
if (tiempoRecorrido == null) {
tiempoRecorrido = new Hora();
tiempoRecorrido = new HoraSistema();
}
this.tiempoRecorrido = tiempoRecorrido;
}
@ -119,7 +119,7 @@ public class SecuenciaRutaTramoVO {
@Override
public String toString() {
Hora hora = getTiempoRecorrido();
HoraSistema hora = getTiempoRecorrido();
return secuencia + ";" + origen + ";" + destino + ";" + via + ";" + kmReal + ";"
+ ((hora != null) ? hora.getHora() : "-") + ";" + ((hora != null) ? hora.getMinuto() : "-");