mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-01-13 00:48:49 +00:00
56 lines
1.8 KiB
Java
56 lines
1.8 KiB
Java
package com.imprimelibros.erp.pedidos;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.List;
|
|
import java.util.Locale;
|
|
import java.util.Map;
|
|
|
|
@Service
|
|
public class PedidoEstadoService {
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(PedidoEstadoService.class);
|
|
|
|
private final PedidoLineaRepository pedidoLineaRepository;
|
|
private final PedidoService pedidoService;
|
|
|
|
public PedidoEstadoService(PedidoLineaRepository pedidoLineaRepository, PedidoService pedidoService) {
|
|
this.pedidoLineaRepository = pedidoLineaRepository;
|
|
this.pedidoService = pedidoService;
|
|
}
|
|
|
|
/**
|
|
* Ejecuta cada noche a las 4:00 AM
|
|
*/
|
|
@Scheduled(cron = "0 0 4 * * *")
|
|
public void actualizarEstadosPedidos() {
|
|
|
|
List<PedidoLinea> pedidosLineas = pedidoLineaRepository.findPedidosLineasParaActualizarEstado();
|
|
|
|
for (PedidoLinea linea : pedidosLineas) {
|
|
try {
|
|
Map<String, Object> resultado = pedidoService.actualizarEstado(linea.getId(), Locale.getDefault());
|
|
|
|
if (!Boolean.TRUE.equals(resultado.get("success"))) {
|
|
log.error("Error al actualizar estado. pedidoLineaId={} message={}",
|
|
linea.getId(), resultado.get("message"));
|
|
}
|
|
} catch (Exception ex) {
|
|
log.error("Excepción actualizando estado. pedidoLineaId={}", linea.getId(), ex);
|
|
}
|
|
|
|
// rate limit / delay
|
|
try {
|
|
Thread.sleep(1000);
|
|
} catch (InterruptedException e) {
|
|
Thread.currentThread().interrupt();
|
|
log.error("Job interrumpido mientras dormía (rate limit).");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|