trabajando en resumen

This commit is contained in:
Jaime Jiménez
2025-08-24 21:02:42 +02:00
parent baf4cb6ae5
commit 6b883ffab2
18 changed files with 1659 additions and 226 deletions

View File

@ -13,7 +13,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;
import java.util.HashMap;
import java.util.function.Supplier;
import java.util.List;
@Service
public class skApiClient {
@ -30,7 +29,6 @@ public class skApiClient {
}
public String getPrice(Map<String, Object> requestBody) {
return performWithRetry(() -> {
String url = this.skApiUrl + "api/calcular";
@ -46,35 +44,43 @@ public class skApiClient {
entity,
String.class);
return response.getBody();
try {
Map<String, Object> responseBody = new ObjectMapper().readValue(response.getBody(), Map.class);
if (responseBody.get("error") == null) {
return new ObjectMapper().writeValueAsString(
Map.of("data", responseBody.get("data")));
} else {
return "{\"error\": 1}";
}
} catch (JsonProcessingException e) {
e.printStackTrace();
return "{\"error\": 1}";
}
});
}
public Integer getMaxSolapas(Map<String, Object> requestBody) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth(authService.getToken());
Map<String, Object> request = new HashMap<>(requestBody);
Map<String, Object> data = new HashMap<>();
try {
String jsonResponse = performWithRetry(() -> {
String url = this.skApiUrl + "api/calcular-solapas";
data.put("clienteId", request.get("clienteId"));
data.put("tamanio", (Map<String, Object>) request.get("tamanio"));
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth(authService.getToken()); // token actualizado
Map<String, Object> data = new HashMap<>();
data.put("clienteId", requestBody.get("clienteId"));
data.put("tamanio", requestBody.get("tamanio"));
data.put("tirada", requestBody.get("tirada"));
data.put("paginas", request.get("paginas"));
data.put("paginasColor", request.get("paginasColor"));
data.put("paginas", requestBody.get("paginas"));
data.put("paginasColor", requestBody.get("paginasColor"));
data.put("papelInteriorDiferente", 0);
data.put("paginasCuadernillo", request.get("paginasCuadernillo"));
data.put("tipo", request.get("tipo"));
data.put("isColor", request.get("isColor"));
data.put("isHq", request.get("isHq"));
data.put("interior", request.get("interior"));
data.put("paginasCuadernillo", requestBody.get("paginasCuadernillo"));
data.put("tipo", requestBody.get("tipo"));
data.put("isColor", requestBody.get("isColor"));
data.put("isHq", requestBody.get("isHq"));
data.put("interior", requestBody.get("interior"));
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(data, headers);
@ -88,19 +94,19 @@ public class skApiClient {
});
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(jsonResponse);
if (root.get("data") == null || !root.get("data").isInt()) {
throw new RuntimeException("Respuesta inesperada de calcular-solapas: " + jsonResponse);
}
int solapas = root.get("data").asInt();
return solapas;
return root.get("data").asInt();
} catch (JsonProcessingException e) {
// No se puede calcular el interior, por lo que las solapas seran el 80% del
// ancho
Map<String, Object> tamanio = (Map<String, Object>)data.get("tamanio");
// Fallback al 80% del ancho
Map<String, Object> tamanio = (Map<String, Object>) requestBody.get("tamanio");
if (tamanio == null || tamanio.get("ancho") == null)
throw new RuntimeException("Tamaño no válido en la solicitud: " + data);
throw new RuntimeException("Tamaño no válido en la solicitud: " + requestBody);
else {
int ancho = (int) tamanio.get("ancho");
return (int) Math.floor(ancho * 0.8); // 80% del ancho
@ -108,6 +114,38 @@ public class skApiClient {
}
}
public Double getRetractilado(Map<String, Object> requestBody) {
String value = performWithRetry(() -> {
String url = this.skApiUrl + "api/calcular-retractilado";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth(authService.getToken());
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(requestBody, headers);
ResponseEntity<String> response = restTemplate.exchange(
url,
HttpMethod.POST,
entity,
String.class);
try {
Map<String, Object> responseBody = new ObjectMapper().readValue(response.getBody(), Map.class);
return responseBody.get("data").toString();
} catch (JsonProcessingException e) {
e.printStackTrace();
return "0.0"; // Fallback en caso de error
}
});
try {
return Double.parseDouble(value);
} catch (NumberFormatException e) {
throw new RuntimeException("Error al parsear el valor de retractilado: " + value, e);
}
}
/******************
* PRIVATE METHODS
******************/