fix levenshtein

This commit is contained in:
dongpd 2020-02-04 15:02:00 +07:00
parent 8cbfd02008
commit 7bf9cf9f25

View File

@ -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 {