From 7bf9cf9f25ccc6f25b83f7c9794247662dfdb1f5 Mon Sep 17 00:00:00 2001 From: dongpd Date: Tue, 4 Feb 2020 15:02:00 +0700 Subject: [PATCH] fix levenshtein --- api/controllers/ApiController.js | 34 +++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/api/controllers/ApiController.js b/api/controllers/ApiController.js index 983de99..97ebee7 100644 --- a/api/controllers/ApiController.js +++ b/api/controllers/ApiController.js @@ -58,7 +58,8 @@ function levenshtein(a, b) { return matrix[b.length][a.length]; } -var current = {"plate": "", "time": 0, "type": "in"}; +var currentIn = {"plate": "", "time": 0}; +var currentOut = {"plate": "", "time": 0}; exports.SaveLogs = async function (req, res) { console.log("req: ", req.body.plate, " current: ", current); @@ -85,16 +86,27 @@ exports.SaveLogs = async function (req, res) { var canSaveLogs = true; var vehicleInfo = {"status": false}; - if (req.body.type === current.type && (currentTimestamp - current.time) < 600) { - if (req.body.plate === current.plate) { + if (req.body.type === "in" && (currentTimestamp - currentIn.time) < 600) { + if (req.body.plate === currentIn.plate) { canSaveLogs = false; - } -// else if (levenshtein(req.body.type, current.type) < 3) { -// canSaveLogs = false; -// } + } else if (levenshtein(req.body.plate, currentIn.plate) < 2) { + canSaveLogs = false; + } + } + if (req.body.type === "out" && (currentTimestamp - currentOut.time) < 600) { + if (req.body.plate === currentOut.plate) { + canSaveLogs = false; + } else if (levenshtein(req.body.plate, currentOut.plate) < 2) { + canSaveLogs = false; + } } if (canSaveLogs) { - current = {"plate": req.body.plate, "time": currentTimestamp, "type": req.body.type}; + if (req.body.type === "in") { + currentIn = {"plate": req.body.plate, "time": currentTimestamp}; + } + if (req.body.type === "out") { + currentOut = {"plate": req.body.plate, "time": currentTimestamp}; + } var fileName = req.body.plate + "_" + currentTimestamp + ".png"; var plateSaved = currentYear + "/" + currentMonth + "/" + currentDate + "/" + req.body.type + "/plate/" + fileName; var frameSaved = currentYear + "/" + currentMonth + "/" + currentDate + "/" + req.body.type + "/frame/" + fileName; @@ -118,7 +130,7 @@ exports.SaveLogs = async function (req, res) { } } } else { - var query_plate_levenshtein = await db.query("SELECT * FROM `vehicle` WHERE levenshtein('" + req.body.plate + "', `plate`) BETWEEN 0 AND 2 LIMIT 0,1"); + var query_plate_levenshtein = await db.query("SELECT * FROM `vehicle` WHERE levenshtein('%" + req.body.plate + "', `plate`) BETWEEN 0 AND 1 LIMIT 0,1"); if (query_plate_levenshtein.length > 0) { vehicleInfo = {"status": true, "data": query_plate_levenshtein[0]}; if (req.body.type == "in") { @@ -137,11 +149,11 @@ exports.SaveLogs = async function (req, res) { await db.query("INSERT INTO logs_unknow(`plate`,`plate_image_in`,`frame_image_in`,`time_in`) VALUES ('" + req.body.plate + "','" + plateSaved + "','" + frameSaved + "'," + currentTimestamp + ")"); } if (req.body.type == "out") { - var checkIn_raw = await db.query("SELECT * FROM logs_unknow WHERE plate=" + req.body.plate + " AND time_out=0 ORDER BY time_in DESC LIMIT 0,1"); + var checkIn_raw = await db.query("SELECT * FROM logs_unknow WHERE plate='" + req.body.plate + "' AND time_out=0 ORDER BY time_in DESC LIMIT 0,1"); if (checkIn_raw.length > 0) { await db.query("UPDATE logs_unknow SET `plate_image_out`='" + plateSaved + "',`frame_image_out`='" + frameSaved + "',`time_out`=" + currentTimestamp + " WHERE id=" + checkIn_raw[0].id); } else { - var checkIn_levenshtein = await db.query("SELECT * FROM `logs_unknow` WHERE levenshtein('" + req.body.plate + "', `plate`) BETWEEN 0 AND 2 AND time_out=0 ORDER BY time_in DESC LIMIT 0,1"); + var checkIn_levenshtein = await db.query("SELECT * FROM `logs_unknow` WHERE levenshtein('%" + req.body.plate + "', `plate`) BETWEEN 0 AND 1 AND time_out=0 ORDER BY time_in DESC LIMIT 0,1"); if (checkIn_levenshtein.length > 0) { await db.query("UPDATE logs_unknow SET `plate_image_out`='" + plateSaved + "',`frame_image_out`='" + frameSaved + "',`time_out`=" + currentTimestamp + " WHERE id=" + checkIn_levenshtein[0].id); } else {