- /*! \fn void Middleware::checkAut(int nGroup)
- \brief Función que comprueba si la matrícula reconocida a la salida del grupo sin báscula está autorizada.
- \param int nGroup [Contiene el número del grupo en el que hay que comprobar si está autorizada la mátricula reconocida]
- */
- void Middleware::checkAut(int nGroup)
- {
- if (lstGroup.at(nGroup).szNameVehiculo.size() <= 0) {
- //PARCHE NEW:06/07/2020-Carlos (ORIGINAL)
- //lstGroup[nGroup].szNameVehiculo = "NO AUTORIZADO";
- //PARCHE NEW: 06/10/2020-Carlos
- //DESCRIPCION: Comprobamos si en la lista de sensores del grupo hay definida
- //una barrera. Si el punto de tránsito tiene barrera, comprobamos si la
- //matrícula está autorizada. En caso contrario omitimos el chequeo de
- //matrícula y mostramos un mensaje de "TRANSITO DETECTADO"
- bool checkBarr = false;
- for (int b = 0; b < lstGroup.at(nGroup).lstSensor.size(); ++b)
- {
- if (lstGroup.at(nGroup).lstSensor.at(b)->bBarrera)
- {
- checkBarr = true;
- break;
- }
- }
- if (checkBarr) {
- lstGroup[nGroup].szNameVehiculo = "NO AUTORIZADO";
- }
- else {
- lstGroup[nGroup].szNameVehiculo = "TRANSITO DETECTADO";
- }
- }
- lstGroup[nGroup].szPlateRec = lstGroup.at(nGroup).szPlate;
- for (int i = 0; (i < lstMatAut.size()) && !lstGroup.at(nGroup).bAut; ++i)
- {
- QMap<QString, QVariant> mapData = lstMatAut.at(i);
- if (mapData["MAT"].toString().trimmed() == lstGroup.at(nGroup).szPlate)
- {
- bool bAut = true;
- //Comprobar autorización de vehículos dados de alta en puntos de gestión.
- for (int j = 0; (j < lstGroup.at(nGroup).lstCam.size()) && (lstGroup.at(nGroup).bascula == NULL); ++j)
- {
- if (lstGroup.at(nGroup).lstCam.at(j)->szRef == lstGroup.at(nGroup).szNameCamRec)
- {
- if (lstGroup.at(nGroup).lstCam.at(j)->szTipoPunto == GESTION)
- bAut = mapData["GES"].toBool();
- }
- }
- lstGroup[nGroup].bAut = bAut;
- lstGroup[nGroup].nPlateId = mapData["ID"].toInt();
- lstGroup[nGroup].szPlate = mapData["MAT_REAL"].toString();
- lstGroup[nGroup].szNameVehiculo = mapData["NAME"].toString();
- //Esto es para que suba y baje el pistón de la pantalla de LIMASA.
- if (lstGroup.at(nGroup).bPiston && mapData.contains("TARA"))
- checkPiston(nGroup, mapData["TARA"].toInt());
- if (!bAut && (lstGroup.at(nGroup).bascula == NULL))
- lstGroup[nGroup].szNameVehiculo = lstGroup.at(nGroup).szNameVehiculo + " (NO AUTORIZADO A GESTION)";
- }
- //PARCHE NEW: 06/10/2020-Carlos
- //DESCRIPCION: Limpiamos estructura QMap de memoria
- mapData.clear();
- }
- //Si la matrícula no se encuentra entre las autorizadas permanentemente, busco si hay orden de carga para ella.
- for (int i = 0; (i < lstGroup.at(nGroup).lstCam.size()) && !lstGroup.at(nGroup).bAut && (lstGroup.at(nGroup).bascula == NULL); ++i)
- {
- if (lstGroup.at(nGroup).lstCam.at(i)->szRef == lstGroup.at(nGroup).szNameCamRec)
- {
- for (int j = 0; (j < lstGroup.at(nGroup).lstCam.at(i)->lstLoadOrders.size()) && !lstGroup.at(nGroup).bAut; ++j)
- {
- QMap<QString, QVariant> mapData;
- QStringList lstAlbaranInfo;
- if (lstGroup.at(nGroup).lstCam.at(i)->szTipoPunto == GESTION)
- {
- if (lstGroup.at(nGroup).lstCam.at(i)->lstLoadOrders.at(j).contains("situacion"))
- {
- if (lstGroup.at(nGroup).lstCam.at(i)->lstLoadOrders.at(j)["situacion"].toString() == ACTIVA)
- mapData = lstGroup.at(nGroup).lstCam.at(i)->lstLoadOrders.at(j);
- }
- }
- else
- mapData = lstGroup.at(nGroup).lstCam.at(i)->lstLoadOrders.at(j);
- if (mapData.contains("matricula"))
- {
- if (mapData["matricula"].toString().trimmed() == lstGroup.at(nGroup).szPlate ||
- mapData["matricula"].toString().trimmed().contains(lstGroup.at(nGroup).szPlate))
- {
- lstGroup[nGroup].bAut = true;
- lstGroup[nGroup].szPlate = mapData["matricula"].toString().trimmed();
- lstGroup[nGroup].szNameVehiculo = "TRANSPORTE CON ORDEN DE CARGA";
- //Recoger la información del albarán que viene en la orden de carga.
- if (mapData.contains("marcaAgua"))
- {
- if (mapData["marcaAgua"].toString().size() > 0)
- lstAlbaranInfo = mapData["marcaAgua"].toString().split("|");
- for (int i = 0; i < lstAlbaranInfo.size(); ++i)
- lstGroup[nGroup].mapAlbaran[i] = lstAlbaranInfo.at(i);
- }
- }
- }
- //PARCHE NEW: 06/10/2020-Carlos
- //DESCRIPCION: Limpiamos estructuras de memoria
- mapData.clear();
- lstAlbaranInfo.clear();
- }
- }
- }
- //Si tras todos los reintentos no se ha conseguido autorizar el transito, indicamos que se autorice la matrícula del vehículo.
- if (!lstGroup.at(nGroup).bAut && lstGroup.at(nGroup).bTransito && (lstGroup.at(nGroup).nIntento == lstGroup.at(nGroup).nReintentos) && (lstGroup.at(nGroup).bascula == NULL))
- {
- //Comprobar autorización de vehículos dados de alta en puntos de gestión.
- for (int j = 0; j < lstGroup.at(nGroup).lstCam.size(); ++j)
- {
- if (lstGroup.at(nGroup).lstCam.at(j)->szRef == lstGroup.at(nGroup).szNameCamRec)
- {
- if (lstGroup.at(nGroup).lstCam.at(j)->szTipoPunto != GESTION)
- {
- if (lstGroup.at(nGroup).szNameVehiculo == "NO AUTORIZADO")
- lstGroup[nGroup].szNameVehiculo = "INTENTOS AGOTADOS, AUTORICE MANUALMENTE!";
- }
- }
- }
- }
- if (lstGroup.at(nGroup).bTransito)
- {
- //PARCHE NEW: 06/10/2020-Carlos
- //DESCRIPCION: Abrimos la barrera si la matrícula está autorizada
- if (lstGroup.at(nGroup).bAut)
- {
- if (lstGroup.at(nGroup).bascula == NULL) {
- //PARCHE NEW:06/10/2020-Carlos (ORIGINAL)
- //saveFrames(nGroup);
- //PARCHE NEW:06/10/2020-Carlos
- //DESCRIPCION: Permitimos el tránsito del vehículo
- qDebug() << "TRANSITO PERMITIDO EN " << lstGroup[nGroup].szGroupName << ": VEHICULO AUTORIZADO (MATR.:"<< lstGroup.at(nGroup).szPlate << ")";
- autTransit(nGroup, lstGroup.at(nGroup).lstSensor.size(), lstGroup.at(nGroup).bAut);
- }
- }
- else
- {
- //Reintentamos el reconocimiento de la mátricula aunque no esté autorizada por si no se ha reconocido correctamente.
- if (lstGroup.at(nGroup).nIntento < lstGroup.at(nGroup).nReintentos)
- {
- lstGroup[nGroup].nIntento++;
- //PARCHE NEW: 06/10/2020-Carlos
- //DESCRIPCION: Si la cámara tiene activada la opción de abrir barrera aunque la matrícula
- //no esté autorizada, abrimos la barrera transcurridos 2 intentos
- if ((lstGroup.at(nGroup).nIntento == 2) && lstGroup.at(nGroup).bAbrBarNoAut)
- {
- qDebug() << "TRANSITO PERMITIDO EN " << lstGroup[nGroup].szGroupName << ": ABRIR BARRERA AUTO (MATR. NO AUTORIZADA:"<< lstGroup.at(nGroup).szPlate << ")";
- autTransit(nGroup, lstGroup.at(nGroup).lstSensor.size(), true);
- return;
- }
- //PARCHE NEW:06/10/2020-Carlos
- //DESCRIPCION: Se comprueba si el número de reintentos ha llegado a la mitad
- //para enviar una señal al cliente. A través de un formulario el cliente podrá
- //abrir barrera y autorizar al vehículo temporalmente o permanentemente.
- if (lstGroup.at(nGroup).nIntento == (lstGroup.at(nGroup).nReintentos / 2))
- {
- sendNoAut(nGroup);
- }
- for (int i = 0; i < lstGroup.at(nGroup).lstCam.size(); ++i)
- {
- if (lstGroup.at(nGroup).lstCam.at(i)->bAlpr)
- {
- if (lstGroup.at(nGroup).szNameCamRec == lstGroup.at(nGroup).lstCam.at(i)->szRef)
- {
- //Guardo el último frame que se reconoció y limpio la lista de frames reconocidos.
- if (lstGroup.at(nGroup).lstCam.at(i)->lstFramePlate.size() > 0)
- {
- lstGroup[nGroup].lastFramePlate = lstGroup.at(nGroup).lstCam.at(i)->lstFramePlate.at(0);
- lstGroup.at(nGroup).lstCam[i]->lstFramePlate.clear();
- }
- lstGroup.at(nGroup).lstCam[i]->lstFrames.clear();
- lstGroup.at(nGroup).lstCam[i]->bAlprActive = true;
- //PARCHE NEW:06/10/2020-Carlos
- //break;
- }
- }
- }
- //PARCHE DEBUG:
- qDebug() << "[CHECKAUT] --> VEHICULO NO AUTORIZADO! Reintento:" << lstGroup.at(nGroup).nIntento << "en grupo" << lstGroup.at(nGroup).szGroupName;
- }
- }
- }
- }