From 260b16a1debe7dbc33982768a37dfd48ca34b248 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期五, 09 一月 2026 14:27:21 +0800
Subject: [PATCH] 1.EAP模拟器完善
---
SourceCode/Bond/Servo/GlassLogDb.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/GlassLogDb.cpp b/SourceCode/Bond/Servo/GlassLogDb.cpp
index b9f0df5..d348bd9 100644
--- a/SourceCode/Bond/Servo/GlassLogDb.cpp
+++ b/SourceCode/Bond/Servo/GlassLogDb.cpp
@@ -524,3 +524,55 @@
ofs.flush();
return rows;
}
+
+std::optional<GlassLogDb::Row> GlassLogDb::queryById(long long id) {
+ std::lock_guard<std::mutex> lk(mtx_);
+
+ const char* sql =
+ "SELECT id, cassette_seq_no, job_seq_no, class_id, material_type, state,"
+ " IFNULL(strftime('%Y-%m-%d %H:%M:%S', t_start, 'localtime'), ''),"
+ " IFNULL(strftime('%Y-%m-%d %H:%M:%S', t_end, 'localtime'), ''),"
+ " buddy_id, aoi_result, path, params, pretty"
+ " FROM " GLASS_LOG_TABLE
+ " WHERE id = ?";
+
+ sqlite3_stmt* stmt = nullptr;
+ try {
+ throwIf(sqlite3_prepare_v2(db_, sql, -1, &stmt, nullptr), db_, "prepare queryById");
+ throwIf(sqlite3_bind_int64(stmt, 1, id), db_, "bind id");
+
+ std::optional<Row> result;
+
+ int rc = sqlite3_step(stmt);
+ if (rc == SQLITE_ROW) {
+ Row row;
+ row.id = sqlite3_column_int64(stmt, 0);
+ row.cassetteSeqNo = sqlite3_column_int(stmt, 1);
+ row.jobSeqNo = sqlite3_column_int(stmt, 2);
+ row.classId = safe_text(stmt, 3);
+ row.materialType = sqlite3_column_int(stmt, 4);
+ row.state = sqlite3_column_int(stmt, 5);
+ row.tStart = safe_text(stmt, 6);
+ row.tEnd = safe_text(stmt, 7);
+ row.buddyId = safe_text(stmt, 8);
+ row.aoiResult = sqlite3_column_int(stmt, 9);
+ row.path = safe_text(stmt, 10);
+ row.params = safe_text(stmt, 11);
+ row.pretty = safe_text(stmt, 12);
+
+ result = std::move(row);
+ }
+ else if (rc != SQLITE_DONE) {
+ throwIf(rc, db_, "queryById step");
+ }
+
+ sqlite3_finalize(stmt);
+ return result;
+ }
+ catch (const std::exception& e) {
+ if (stmt) sqlite3_finalize(stmt);
+ TRACE("GlassLogDb::queryById exception: %s\n", e.what());
+ return std::nullopt;
+ }
+}
+
--
Gitblit v1.9.3