From 1efb832676e8ad27e7a495dba6ffc19479e0c76f Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期四, 04 九月 2025 15:51:33 +0800
Subject: [PATCH] 1.机器配方参数的获取;

---
 SourceCode/Bond/Servo/RecipeManager.cpp |   52 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/SourceCode/Bond/Servo/RecipeManager.cpp b/SourceCode/Bond/Servo/RecipeManager.cpp
index 6e58418..5928d57 100644
--- a/SourceCode/Bond/Servo/RecipeManager.cpp
+++ b/SourceCode/Bond/Servo/RecipeManager.cpp
@@ -62,8 +62,7 @@
         );
     )";
 
-    return m_pDB->executeQuery(createRecipeTable)
-        && m_pDB->executeQuery(createDeviceTable);
+    return m_pDB->executeQuery(createRecipeTable) && m_pDB->executeQuery(createDeviceTable);
 }
 
 void RecipeManager::termRecipeTable() {
@@ -220,7 +219,6 @@
 
         for (const auto& dev : devs) {
             DeviceRecipe dr;
-            dr.strPPID = info.strPPID;
             try {
                 dr.nDeviceID = std::stoi(dev[0]);
                 dr.strDeviceName = dev[1];
@@ -238,6 +236,48 @@
     return recipes;
 }
 
+std::vector<RecipeInfo> RecipeManager::getRecipesByKeyword(const std::string& keyword) {
+    std::vector<RecipeInfo> recipes;
+    if (!m_pDB || keyword.empty()) {
+        return recipes;
+    }
+
+    std::ostringstream query;
+    query << "SELECT ppid, description, create_time FROM recipes "
+        << "WHERE ppid LIKE '%" << keyword << "%' OR description LIKE '%" << keyword << "%';";
+
+    auto rows = m_pDB->fetchResults(query.str());
+    for (const auto& row : rows) {
+        if (row.size() >= 3) {
+            RecipeInfo info;
+            info.strPPID = row[0];
+            info.strDescription = row[1];
+            info.strCreateTime = row[2];
+            recipes.push_back(info);
+        }
+    }
+    return recipes;
+}
+
+std::vector<std::string> RecipeManager::getAllPPID() const {
+    std::vector<std::string> vecPPID;
+
+    if (!m_pDB) {
+        return vecPPID;
+    }
+
+    const std::string query = "SELECT ppid FROM recipes ORDER BY ppid;";
+    auto result = m_pDB->fetchResults(query);
+
+    for (const auto& row : result) {
+        if (!row.empty()) {
+            vecPPID.push_back(row[0]);
+        }
+    }
+
+    return vecPPID;
+}
+
 RecipeInfo RecipeManager::getRecipeByPPID(const std::string& ppid) {
     RecipeInfo info;
     auto rows = m_pDB->fetchResults("SELECT ppid, description, create_time FROM recipes WHERE ppid = '" + ppid + "';");
@@ -252,7 +292,6 @@
     auto devs = m_pDB->fetchResults("SELECT device_id, device_name, recipe_id FROM recipe_devices WHERE ppid = '" + ppid + "';");
     for (const auto& dev : devs) {
         DeviceRecipe dr;
-        dr.strPPID = ppid;
         try {
             dr.nDeviceID = std::stoi(dev[0]);
             dr.strDeviceName = dev[1];
@@ -406,8 +445,8 @@
     recipe.strDescription = "Main Board Burn-in";
 
     recipe.vecDeviceList = {
-        {1, 101, "P1001","Burner A"},
-        {2, 102, "P1001", "Burner B"}
+        {1, 101, "Burner A"},
+        {2, 102, "Burner B"}
     };
 
     addRecipe(recipe);
@@ -444,7 +483,6 @@
         std::getline(ss, description, ',');
         std::getline(ss, createTime, ',');
 
-        dev.strPPID = ppid;
         auto& recipe = recipeMap[ppid];
         recipe.strPPID = ppid;
         recipe.strDescription = description;

--
Gitblit v1.9.3