🧪 Consulta de Tanques por Viaje
Este documento mapea el endpoint legacy consultarViajesTanques al nuevo servicio y detalla el mapeo a tablas de base de datos.
1) Legacy → Nuevo
-
Legacy request (ejemplo):
{ "idviaje": 508463, "idsocio": 5431 } -
Nuevo servicio: Trip Query Service (v1)
Endpoint:GET /trips/{idViaje}/tanks?idSocio={idSocio}
Descripción: Consulta tanques asociados a un viaje y socio específicos (lectura).Ejemplo (equivalente):
GET /trips/508463/tanks?idSocio=5431
Nota: La captura/actualización de muestreos de tanques no se hace aquí; se realiza con Trip Execution Service (v1)
POST /trips/{rowId}/tanks(escritura).
2) Estructura de respuesta (nuevo) — Equivalente a legacy
Legacy response (ejemplo):
{
"AlpDetRecoTanquesViajesCollection": {
"#text": "-",
"AlpDetRecoTanquesViajes": [
{
"idViaje": 508463,
"tanqueSoc": 1,
"producto": "DIINEZ0001",
"descripcionProducto": "LECHE CRUDA",
"litrosRemisionados": 0,
"rowId": 2998791,
"muestraReco": "",
"saborOlor": "",
"estabilidad": "",
"densidad": "",
"temperatura": "",
"udm": "",
"observaciones": ""
},
{
"idViaje": 508463,
"tanqueSoc": 2,
"producto": "DIINEZ0001",
"descripcionProducto": "LECHE CRUDA",
"litrosRemisionados": 0,
"rowId": 2998790,
"muestraReco": "",
"saborOlor": "",
"estabilidad": "",
"densidad": "",
"temperatura": "",
"udm": "",
"observaciones": ""
}
]
}
}
Nuevo response (equivalente):
{
"AlpDetRecoTanquesViajesCollection": {
"AlpDetRecoTanquesViajes": [
{
"idViaje": 508463,
"tanqueSoc": 1,
"producto": "DIINEZ0001",
"descripcionProducto": "LECHE CRUDA",
"litrosRemisionados": 0,
"rowId": 2998791,
"muestraReco": "",
"saborOlor": "",
"estabilidad": "",
"densidad": "",
"temperatura": "",
"udm": "",
"observaciones": ""
}
]
}
}
3) Mapeo a Tablas de Base de Datos
Tabla principal para tanques por viaje:
ALP_DET_RECO_TANQUES_VIAJES
Tablas relacionadas:ALP_DET_RECOLECCION_VIAJES(detalle por socio/visita),ALP_RECOLECCION_VIAJES(maestro, ruta/producto).
| Campo (response) | Tabla.Columna | Observaciones |
|---|---|---|
rowId | ALP_DET_RECO_TANQUES_VIAJES.ROW_ID | Identificador del tanque por viaje |
idViaje | ALP_DET_RECO_TANQUES_VIAJES.ID_VIAJE | FK hacia viaje |
idSocio (implícito) | ALP_DET_RECO_TANQUES_VIAJES.ID_SOCIO | Se filtra por idSocio en query |
tanqueSoc | ALP_DET_RECO_TANQUES_VIAJES.TANQUE_SOC | No. de tanque por socio |
producto | ALP_DET_RECO_TANQUES_VIAJES.PRODUCTO | Código de producto |
descripcionProducto | Catálogo de productos / descripción | Puede venir de catálogo o campo descriptivo asociado |
litrosRemisionados | ALP_DET_RECO_TANQUES_VIAJES.LITROS_REMISIONADOS | |
muestraReco | ALP_DET_RECO_TANQUES_VIAJES.MUESTRA* | Si existe como MUESTRA/MUESTRA_RECO en el modelo físico |
saborOlor | ALP_DET_RECO_TANQUES_VIAJES.SABOR_OLOR* | Verificar nombre exacto en físico |
estabilidad | ALP_DET_RECO_TANQUES_VIAJES.ESTABILIDAD* | |
densidad | ALP_DET_RECO_TANQUES_VIAJES.DENSIDAD | |
temperatura | ALP_DET_RECO_TANQUES_VIAJES.TEMPERATURA | |
udm | ALP_DET_RECO_TANQUES_VIAJES.UDM* | Unidad de medida (si aplica) |
observaciones | ALP_DET_RECO_TANQUES_VIAJES.OBSERVACIONES* |
* Campos marcados con * dependen del nombre exacto en el modelo físico; el diccionario confirma DENSIDAD, TEMPERATURA, PRODUCTO, LITROS_(REMISIONADOS/PROGRAMADOS), etc.
Relaciones clave (ER):
4) SQL de referencia (consulta por viaje y socio)
SELECT
t.ROW_ID AS rowId,
t.ID_VIAJE AS idViaje,
t.ID_SOCIO AS idSocio,
t.TANQUE_SOC AS tanqueSoc,
t.PRODUCTO AS producto,
/* Descripción producto: preferir catálogo; si no, derivar de maestro si existe */
t.LITROS_REMISIONADOS AS litrosRemisionados,
t.DENSIDAD AS densidad,
t.TEMPERATURA AS temperatura
/* + otros campos de calidad si están en el físico: MUESTRA, SABOR_OLOR, ESTABILIDAD, UDM, OBSERVACIONES */
FROM ALP_DET_RECO_TANQUES_VIAJES t
WHERE t.ID_VIAJE = :idViaje
AND t.ID_SOCIO = :idSocio;
5) Diferenciación de responsabilidades
- Trip Query Service (v1)
GET /trips/{idViaje}/tanks?idSocio=→ Consulta (lectura de tanques). - Trip Execution Service (v1)
POST /trips/{rowId}/tanks→ Captura/actualización de resultados de muestreo (escritura).