fix: detecciones
This commit is contained in:
parent
c6f39e33f4
commit
ec446beaf8
@ -194,6 +194,7 @@ public function deteccionesDelDia(Request $request, int $id)
|
|||||||
// Filtrar solo VIN, placa, antena y si es robado
|
// Filtrar solo VIN, placa, antena y si es robado
|
||||||
$deteccionesFiltradas = array_map(function($deteccion) {
|
$deteccionesFiltradas = array_map(function($deteccion) {
|
||||||
return [
|
return [
|
||||||
|
'tid' => $deteccion['fast_id'] ?? null,
|
||||||
'vin' => $deteccion['vin'] ?? null,
|
'vin' => $deteccion['vin'] ?? null,
|
||||||
'placa' => $deteccion['placa'] ?? null,
|
'placa' => $deteccion['placa'] ?? null,
|
||||||
'antena' => $deteccion['antena'] ?? null,
|
'antena' => $deteccion['antena'] ?? null,
|
||||||
|
|||||||
@ -405,7 +405,7 @@ public function buscarPorTag(Request $request)
|
|||||||
if (!$resultado['success']) {
|
if (!$resultado['success']) {
|
||||||
return ApiResponse::OK->response([
|
return ApiResponse::OK->response([
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'message' => 'Error al registrar vehiculo'
|
'message' => 'Error, NO se encontró el vehiculo'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -46,7 +46,6 @@ public function consultarVehiculoPorTag(?string $criterio = null)
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determinar el tipo de búsqueda (intentar primero como tag_number, luego placa, luego VIN)
|
|
||||||
$url = $this->baseUrl . $this->vehiculosEndpoint;
|
$url = $this->baseUrl . $this->vehiculosEndpoint;
|
||||||
|
|
||||||
Log::info('ConsultaRepuveConstancia: Consultando', [
|
Log::info('ConsultaRepuveConstancia: Consultando', [
|
||||||
@ -54,46 +53,48 @@ public function consultarVehiculoPorTag(?string $criterio = null)
|
|||||||
'criterio' => $criterio
|
'criterio' => $criterio
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Intentar buscar por tag_number primero
|
$headers = [
|
||||||
$response = Http::withHeaders([
|
|
||||||
'Authorization' => 'Bearer ' . $token,
|
'Authorization' => 'Bearer ' . $token,
|
||||||
'Accept' => 'application/json',
|
'Accept' => 'application/json',
|
||||||
])->timeout(30)->get($url, [
|
];
|
||||||
|
|
||||||
|
// Intentar buscar por tag_number primero
|
||||||
|
$response = Http::withHeaders($headers)->timeout(30)->get($url, [
|
||||||
'tag_number' => $criterio
|
'tag_number' => $criterio
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Si no lo encuentra por tag_number, intentar por placa
|
|
||||||
if ($response->successful()) {
|
if ($response->successful()) {
|
||||||
$data = $response->json();
|
$data = $response->json();
|
||||||
if (isset($data['data']['records']['data']) && !empty($data['data']['records']['data'])) {
|
if (
|
||||||
|
isset($data['status']) && $data['status'] === 'success'
|
||||||
|
&& isset($data['data']['records']['data'])
|
||||||
|
&& !empty($data['data']['records']['data'])
|
||||||
|
) {
|
||||||
$vehiculoEncontrado = $data['data']['records']['data'][0];
|
$vehiculoEncontrado = $data['data']['records']['data'][0];
|
||||||
return $this->transformarDatosVehiculo($vehiculoEncontrado);
|
return $this->transformarDatosVehiculo($vehiculoEncontrado);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Intentar búsqueda por placa
|
// Intentar búsqueda por placa SOLO si el anterior NO encontró nada
|
||||||
$response = Http::withHeaders([
|
$response = Http::withHeaders($headers)->timeout(30)->get($url, [
|
||||||
'Authorization' => 'Bearer ' . $token,
|
|
||||||
'Accept' => 'application/json',
|
|
||||||
])->timeout(30)->get($url, [
|
|
||||||
'placa' => $criterio
|
'placa' => $criterio
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Si no lo encuentra por placa, intentar por VIN
|
|
||||||
if ($response->successful()) {
|
if ($response->successful()) {
|
||||||
$data = $response->json();
|
$data = $response->json();
|
||||||
if (isset($data['data']['records']['data']) && !empty($data['data']['records']['data'])) {
|
if (
|
||||||
|
isset($data['status']) && $data['status'] === 'success'
|
||||||
|
&& isset($data['data']['records']['data'])
|
||||||
|
&& !empty($data['data']['records']['data'])
|
||||||
|
) {
|
||||||
$vehiculoEncontrado = $data['data']['records']['data'][0];
|
$vehiculoEncontrado = $data['data']['records']['data'][0];
|
||||||
return $this->transformarDatosVehiculo($vehiculoEncontrado);
|
return $this->transformarDatosVehiculo($vehiculoEncontrado);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Intentar búsqueda por VIN
|
// Intentar búsqueda por VIN SOLO si los anteriores NO encontraron nada
|
||||||
$response = Http::withHeaders([
|
$response = Http::withHeaders($headers)->timeout(30)->get($url, [
|
||||||
'Authorization' => 'Bearer ' . $token,
|
'vin' => $criterio
|
||||||
'Accept' => 'application/json',
|
|
||||||
])->timeout(30)->get($url, [
|
|
||||||
'niv' => $criterio
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (!$response->successful()) {
|
if (!$response->successful()) {
|
||||||
@ -106,29 +107,21 @@ public function consultarVehiculoPorTag(?string $criterio = null)
|
|||||||
|
|
||||||
$data = $response->json();
|
$data = $response->json();
|
||||||
|
|
||||||
// Validar estructura de respuesta
|
// Validar estructura de respuesta y que haya datos
|
||||||
if (!isset($data['status']) || $data['status'] !== 'success' || !isset($data['data']['records']['data'])) {
|
if (
|
||||||
Log::warning('ConsultaRepuveConstancia: Respuesta con estructura inválida', [
|
!isset($data['status']) || $data['status'] !== 'success'
|
||||||
'response' => $data
|
|| !isset($data['data']['records']['data'])
|
||||||
]);
|
|| empty($data['data']['records']['data'])
|
||||||
return null;
|
) {
|
||||||
}
|
|
||||||
|
|
||||||
// recibir solo el vehículo buscado (o vacío)
|
Log::info('ConsultaRepuveConstancia: Vehículo no encontrado en ningún criterio', [
|
||||||
$vehiculos = $data['data']['records']['data'];
|
|
||||||
|
|
||||||
if (empty($vehiculos)) {
|
|
||||||
Log::info('ConsultaRepuveConstancia: Vehículo no encontrado', [
|
|
||||||
'criterio' => $criterio
|
'criterio' => $criterio
|
||||||
]);
|
]);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$vehiculoEncontrado = $vehiculos[0];
|
$vehiculoEncontrado = $data['data']['records']['data'][0];
|
||||||
|
|
||||||
// Transformar datos al formato esperado
|
|
||||||
return $this->transformarDatosVehiculo($vehiculoEncontrado);
|
return $this->transformarDatosVehiculo($vehiculoEncontrado);
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Log::error('ConsultaRepuveConstancia: Error al consultar vehículo', [
|
Log::error('ConsultaRepuveConstancia: Error al consultar vehículo', [
|
||||||
'criterio' => $criterio,
|
'criterio' => $criterio,
|
||||||
@ -139,6 +132,7 @@ public function consultarVehiculoPorTag(?string $criterio = null)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtener token JWT
|
* Obtener token JWT
|
||||||
*/
|
*/
|
||||||
@ -192,7 +186,6 @@ private function obtenerToken()
|
|||||||
Log::info('ConsultaRepuveConstancia: Token obtenido y guardado en caché');
|
Log::info('ConsultaRepuveConstancia: Token obtenido y guardado en caché');
|
||||||
|
|
||||||
return $token;
|
return $token;
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Log::error('ConsultaRepuveConstancia: Excepción al obtener token', [
|
Log::error('ConsultaRepuveConstancia: Excepción al obtener token', [
|
||||||
'error' => $e->getMessage(),
|
'error' => $e->getMessage(),
|
||||||
|
|||||||
@ -231,27 +231,43 @@ private function actualizarDeteccionRedis(string $fastId, array $datosActuales)
|
|||||||
*/
|
*/
|
||||||
private function registrarDeteccion(string $fastId, array $resultado, ?int $arcoId = null, ?string $antena = null)
|
private function registrarDeteccion(string $fastId, array $resultado, ?int $arcoId = null, ?string $antena = null)
|
||||||
{
|
{
|
||||||
if (!$resultado['success'] || !isset($resultado['vehiculo'])) {
|
// Datos mínimos que siempre tenemos
|
||||||
return;
|
$datosMinimos = [
|
||||||
}
|
|
||||||
|
|
||||||
$vehiculo = $resultado['vehiculo'];
|
|
||||||
|
|
||||||
// Registrar en MySQL
|
|
||||||
Detection::create([
|
|
||||||
'arco_id' => $arcoId,
|
'arco_id' => $arcoId,
|
||||||
'antena' => $antena,
|
'antena' => $antena,
|
||||||
'fast_id' => $fastId,
|
'fast_id' => $fastId,
|
||||||
'vin' => $vehiculo['vin'] ?? null,
|
|
||||||
'placa' => $vehiculo['placa'] ?? null,
|
|
||||||
'marca' => $vehiculo['marca'] ?? null,
|
|
||||||
'modelo' => $vehiculo['modelo'] ?? null,
|
|
||||||
'color' => $vehiculo['color'] ?? null,
|
|
||||||
'fecha_deteccion' => now()
|
'fecha_deteccion' => now()
|
||||||
]);
|
];
|
||||||
|
|
||||||
// Registrar en Redis (detecciones del día)
|
// Si encontramos el vehículo, agregamos datos completos
|
||||||
$this->registrarDeteccionDelDia($fastId, $vehiculo, $arcoId, $resultado, $antena);
|
if ($resultado['success'] && isset($resultado['vehiculo'])) {
|
||||||
|
$vehiculo = $resultado['vehiculo'];
|
||||||
|
Detection::create(array_merge($datosMinimos, [
|
||||||
|
'vin' => $vehiculo['vin'] ?? null,
|
||||||
|
'placa' => $vehiculo['placa'] ?? null,
|
||||||
|
'marca' => $vehiculo['marca'] ?? null,
|
||||||
|
'modelo' => $vehiculo['modelo'] ?? null,
|
||||||
|
'color' => $vehiculo['color'] ?? null,
|
||||||
|
]));
|
||||||
|
|
||||||
|
// También registrar en Redis (detecciones del día)
|
||||||
|
$this->registrarDeteccionDelDia($fastId, $vehiculo, $arcoId, $resultado, $antena);
|
||||||
|
} else {
|
||||||
|
// No encontrado: guardar solo datos mínimos
|
||||||
|
Detection::create(array_merge($datosMinimos, [
|
||||||
|
'vin' => null,
|
||||||
|
'placa' => null,
|
||||||
|
'marca' => null,
|
||||||
|
'modelo' => null,
|
||||||
|
'color' => null,
|
||||||
|
]));
|
||||||
|
|
||||||
|
// Registrar en Redis con datos incompletos
|
||||||
|
$this->registrarDeteccionDelDia($fastId, [], $arcoId, [
|
||||||
|
'estado' => 'DESCONOCIDO',
|
||||||
|
'tiene_reporte_robo' => false
|
||||||
|
], $antena);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user