Facebook
From Innocent Sloth, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 66
  1. /*! \fn void Middleware::checkAut(int nGroup)
  2. \brief Función que comprueba si la matrícula reconocida a la salida del grupo sin báscula está autorizada.
  3. \param int nGroup [Contiene el número del grupo en el que hay que comprobar si está autorizada la mátricula reconocida]
  4. */
  5. void Middleware::checkAut(int nGroup)
  6. {
  7.     if (lstGroup.at(nGroup).szNameVehiculo.size() <= 0) {
  8.  
  9.         //PARCHE NEW:06/07/2020-Carlos (ORIGINAL)
  10.         //lstGroup[nGroup].szNameVehiculo = "NO AUTORIZADO";
  11.  
  12.         //PARCHE NEW: 06/10/2020-Carlos
  13.         //DESCRIPCION: Comprobamos si en la lista de sensores del grupo hay definida
  14.         //una barrera. Si el punto de tránsito tiene barrera, comprobamos si la
  15.         //matrícula está autorizada. En caso contrario omitimos el chequeo de
  16.         //matrícula y mostramos un mensaje de "TRANSITO DETECTADO"
  17.         bool checkBarr = false;
  18.         for (int b = 0; b < lstGroup.at(nGroup).lstSensor.size(); ++b)
  19.         {
  20.             if (lstGroup.at(nGroup).lstSensor.at(b)->bBarrera)
  21.             {
  22.                checkBarr = true;
  23.                break;
  24.             }
  25.         }
  26.         if (checkBarr) {
  27.             lstGroup[nGroup].szNameVehiculo = "NO AUTORIZADO";
  28.         }
  29.         else {
  30.            lstGroup[nGroup].szNameVehiculo = "TRANSITO DETECTADO";
  31.         }
  32.     }
  33.  
  34.     lstGroup[nGroup].szPlateRec = lstGroup.at(nGroup).szPlate;
  35.  
  36.     for (int i = 0; (i < lstMatAut.size()) && !lstGroup.at(nGroup).bAut; ++i)
  37.     {
  38.         QMap<QString, QVariant> mapData = lstMatAut.at(i);
  39.  
  40.         if (mapData["MAT"].toString().trimmed() == lstGroup.at(nGroup).szPlate)
  41.         {
  42.             bool bAut = true;
  43.  
  44.             //Comprobar autorización de vehículos dados de alta en puntos de gestión.
  45.             for (int j = 0; (j < lstGroup.at(nGroup).lstCam.size()) && (lstGroup.at(nGroup).bascula == NULL); ++j)
  46.             {
  47.                 if (lstGroup.at(nGroup).lstCam.at(j)->szRef == lstGroup.at(nGroup).szNameCamRec)
  48.                 {
  49.                     if (lstGroup.at(nGroup).lstCam.at(j)->szTipoPunto == GESTION)
  50.                         bAut = mapData["GES"].toBool();
  51.                 }
  52.             }
  53.  
  54.             lstGroup[nGroup].bAut = bAut;
  55.             lstGroup[nGroup].nPlateId = mapData["ID"].toInt();
  56.             lstGroup[nGroup].szPlate = mapData["MAT_REAL"].toString();
  57.             lstGroup[nGroup].szNameVehiculo = mapData["NAME"].toString();
  58.  
  59.             //Esto es para que suba y baje el pistón de la pantalla de LIMASA.
  60.             if (lstGroup.at(nGroup).bPiston && mapData.contains("TARA"))
  61.                 checkPiston(nGroup, mapData["TARA"].toInt());
  62.  
  63.             if (!bAut && (lstGroup.at(nGroup).bascula == NULL))
  64.                 lstGroup[nGroup].szNameVehiculo = lstGroup.at(nGroup).szNameVehiculo + " (NO AUTORIZADO A GESTION)";
  65.         }
  66.         //PARCHE NEW: 06/10/2020-Carlos
  67.         //DESCRIPCION: Limpiamos estructura QMap de memoria
  68.         mapData.clear();
  69.     }
  70.  
  71.     //Si la matrícula no se encuentra entre las autorizadas permanentemente, busco si hay orden de carga para ella.
  72.     for (int i = 0; (i < lstGroup.at(nGroup).lstCam.size()) && !lstGroup.at(nGroup).bAut && (lstGroup.at(nGroup).bascula == NULL); ++i)
  73.     {
  74.         if (lstGroup.at(nGroup).lstCam.at(i)->szRef == lstGroup.at(nGroup).szNameCamRec)
  75.         {
  76.             for (int j = 0; (j < lstGroup.at(nGroup).lstCam.at(i)->lstLoadOrders.size()) && !lstGroup.at(nGroup).bAut; ++j)
  77.             {
  78.                 QMap<QString, QVariant> mapData;
  79.                 QStringList lstAlbaranInfo;
  80.  
  81.                 if (lstGroup.at(nGroup).lstCam.at(i)->szTipoPunto == GESTION)
  82.                 {
  83.                     if (lstGroup.at(nGroup).lstCam.at(i)->lstLoadOrders.at(j).contains("situacion"))
  84.                     {
  85.                         if (lstGroup.at(nGroup).lstCam.at(i)->lstLoadOrders.at(j)["situacion"].toString() == ACTIVA)
  86.                             mapData = lstGroup.at(nGroup).lstCam.at(i)->lstLoadOrders.at(j);
  87.                     }
  88.                 }
  89.  
  90.                 else
  91.                     mapData = lstGroup.at(nGroup).lstCam.at(i)->lstLoadOrders.at(j);
  92.  
  93.                 if (mapData.contains("matricula"))
  94.                 {
  95.                     if (mapData["matricula"].toString().trimmed() == lstGroup.at(nGroup).szPlate ||
  96.                         mapData["matricula"].toString().trimmed().contains(lstGroup.at(nGroup).szPlate))
  97.                     {
  98.                         lstGroup[nGroup].bAut = true;
  99.                         lstGroup[nGroup].szPlate = mapData["matricula"].toString().trimmed();
  100.                         lstGroup[nGroup].szNameVehiculo = "TRANSPORTE CON ORDEN DE CARGA";
  101.  
  102.                         //Recoger la información del albarán que viene en la orden de carga.
  103.                         if (mapData.contains("marcaAgua"))
  104.                         {
  105.                             if (mapData["marcaAgua"].toString().size() > 0)
  106.                                 lstAlbaranInfo = mapData["marcaAgua"].toString().split("|");
  107.  
  108.                             for (int i = 0; i < lstAlbaranInfo.size(); ++i)
  109.                                 lstGroup[nGroup].mapAlbaran[i] = lstAlbaranInfo.at(i);
  110.                         }
  111.                     }
  112.                 }
  113.                 //PARCHE NEW: 06/10/2020-Carlos
  114.                 //DESCRIPCION: Limpiamos estructuras de memoria
  115.                 mapData.clear();
  116.                 lstAlbaranInfo.clear();
  117.             }
  118.         }
  119.     }
  120.  
  121.     //Si tras todos los reintentos no se ha conseguido autorizar el transito, indicamos que se autorice la matrícula del vehículo.
  122.     if (!lstGroup.at(nGroup).bAut && lstGroup.at(nGroup).bTransito && (lstGroup.at(nGroup).nIntento == lstGroup.at(nGroup).nReintentos) && (lstGroup.at(nGroup).bascula == NULL))
  123.     {
  124.         //Comprobar autorización de vehículos dados de alta en puntos de gestión.
  125.         for (int j = 0; j < lstGroup.at(nGroup).lstCam.size(); ++j)
  126.         {
  127.             if (lstGroup.at(nGroup).lstCam.at(j)->szRef == lstGroup.at(nGroup).szNameCamRec)
  128.             {
  129.                 if (lstGroup.at(nGroup).lstCam.at(j)->szTipoPunto != GESTION)
  130.                 {
  131.                     if (lstGroup.at(nGroup).szNameVehiculo == "NO AUTORIZADO")
  132.                         lstGroup[nGroup].szNameVehiculo = "INTENTOS AGOTADOS, AUTORICE MANUALMENTE!";
  133.                 }
  134.             }
  135.         }
  136.     }
  137.  
  138.     if (lstGroup.at(nGroup).bTransito)
  139.     {
  140.         //PARCHE NEW: 06/10/2020-Carlos
  141.         //DESCRIPCION: Abrimos la barrera si la matrícula está autorizada
  142.         if (lstGroup.at(nGroup).bAut)
  143.         {
  144.             if (lstGroup.at(nGroup).bascula == NULL) {
  145.                 //PARCHE NEW:06/10/2020-Carlos (ORIGINAL)
  146.                 //saveFrames(nGroup);
  147.  
  148.                 //PARCHE NEW:06/10/2020-Carlos
  149.                 //DESCRIPCION: Permitimos el tránsito del vehículo
  150.                 qDebug() << "TRANSITO PERMITIDO EN " << lstGroup[nGroup].szGroupName << ": VEHICULO AUTORIZADO (MATR.:"<< lstGroup.at(nGroup).szPlate << ")";
  151.                 autTransit(nGroup, lstGroup.at(nGroup).lstSensor.size(), lstGroup.at(nGroup).bAut);
  152.             }
  153.         }
  154.  
  155.         else
  156.         {
  157.             //Reintentamos el reconocimiento de la mátricula aunque no esté autorizada por si no se ha reconocido correctamente.
  158.             if (lstGroup.at(nGroup).nIntento < lstGroup.at(nGroup).nReintentos)
  159.             {
  160.                 lstGroup[nGroup].nIntento++;
  161.  
  162.                 //PARCHE NEW: 06/10/2020-Carlos
  163.                 //DESCRIPCION: Si la cámara tiene activada la opción de abrir barrera aunque la matrícula
  164.                 //no esté autorizada, abrimos la barrera transcurridos 2 intentos
  165.                 if ((lstGroup.at(nGroup).nIntento == 2) && lstGroup.at(nGroup).bAbrBarNoAut)
  166.                 {
  167.                     qDebug() << "TRANSITO PERMITIDO EN " << lstGroup[nGroup].szGroupName << ": ABRIR BARRERA AUTO (MATR. NO AUTORIZADA:"<< lstGroup.at(nGroup).szPlate << ")";
  168.                     autTransit(nGroup, lstGroup.at(nGroup).lstSensor.size(), true);
  169.                     return;
  170.                 }
  171.                 //PARCHE NEW:06/10/2020-Carlos
  172.                 //DESCRIPCION: Se comprueba si el número de reintentos ha llegado a la mitad
  173.                 //para enviar una señal al cliente. A través de un formulario el cliente podrá
  174.                 //abrir barrera y autorizar al vehículo temporalmente o permanentemente.
  175.                 if (lstGroup.at(nGroup).nIntento == (lstGroup.at(nGroup).nReintentos / 2))
  176.                 {
  177.                     sendNoAut(nGroup);
  178.                 }
  179.  
  180.                 for (int i = 0; i < lstGroup.at(nGroup).lstCam.size(); ++i)
  181.                 {
  182.                     if (lstGroup.at(nGroup).lstCam.at(i)->bAlpr)
  183.                     {
  184.                         if (lstGroup.at(nGroup).szNameCamRec == lstGroup.at(nGroup).lstCam.at(i)->szRef)
  185.                         {
  186.                             //Guardo el último frame que se reconoció y limpio la lista de frames reconocidos.
  187.                             if (lstGroup.at(nGroup).lstCam.at(i)->lstFramePlate.size() > 0)
  188.                             {
  189.                                 lstGroup[nGroup].lastFramePlate = lstGroup.at(nGroup).lstCam.at(i)->lstFramePlate.at(0);
  190.                                 lstGroup.at(nGroup).lstCam[i]->lstFramePlate.clear();
  191.                             }
  192.  
  193.                             lstGroup.at(nGroup).lstCam[i]->lstFrames.clear();
  194.                             lstGroup.at(nGroup).lstCam[i]->bAlprActive = true;
  195.  
  196.                             //PARCHE NEW:06/10/2020-Carlos
  197.                             //break;
  198.                         }
  199.                     }
  200.                 }
  201.                 //PARCHE DEBUG:
  202.                 qDebug() << "[CHECKAUT] --> VEHICULO NO AUTORIZADO! Reintento:" << lstGroup.at(nGroup).nIntento << "en grupo" << lstGroup.at(nGroup).szGroupName;
  203.             }
  204.         }
  205.     }
  206. }
  207.