From 912107fe4246eb26a17760d39d4d8ab1bc953df3 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期二, 17 六月 2025 11:34:15 +0800
Subject: [PATCH] 1. 新增搬运时的状态

---
 SourceCode/Bond/Servo/TransferManager.h   |   17 --------
 SourceCode/Bond/Servo/Model.cpp           |    2 
 SourceCode/Bond/Servo/TransferManager.cpp |   90 +++++++++++++++-----------------------------
 3 files changed, 33 insertions(+), 76 deletions(-)

diff --git a/SourceCode/Bond/Servo/Model.cpp b/SourceCode/Bond/Servo/Model.cpp
index 04cf046..27056bd 100644
--- a/SourceCode/Bond/Servo/Model.cpp
+++ b/SourceCode/Bond/Servo/Model.cpp
@@ -244,7 +244,7 @@
 
 		// 状态映射
 		static const char* STATUS_STR[] = {
-			"Unknown", "Ready", "Running", "Error", "Abort", "Completed"
+			"Unknown", "Ready", "Running", "Picking", "Placing", "Restoring", "Error", "Abort", "Completed"
 		};
 		auto state = pTask->getState();
 		int index = static_cast<int>(state);
diff --git a/SourceCode/Bond/Servo/TransferManager.cpp b/SourceCode/Bond/Servo/TransferManager.cpp
index 6079a79..bf7e2a4 100644
--- a/SourceCode/Bond/Servo/TransferManager.cpp
+++ b/SourceCode/Bond/Servo/TransferManager.cpp
@@ -29,45 +29,6 @@
     }
 }
 
-// 任务状态转换成 int 类型
-int TransferManager::statusToInt(TransferStatus status) {
-    return static_cast<int>(status);
-}
-
-// int 类型转换成任务状态
-TransferStatus TransferManager::intToStatus(int value) {
-    switch (value) {
-        case 0: return TransferStatus::Ready;
-        case 1: return TransferStatus::Running;
-        case 2: return TransferStatus::Error;
-        case 3: return TransferStatus::Abort;
-        case 4: return TransferStatus::Completed;
-        default: return TransferStatus::Error;
-    }
-}
-
-// 任务状态转换成字符串
-std::string TransferManager::statusToString(TransferStatus status) {
-    switch (status) {
-        case TransferStatus::Ready:     return "Ready";
-        case TransferStatus::Running:   return "Running";
-        case TransferStatus::Error:     return "Error";
-        case TransferStatus::Abort:     return "Abort";
-        case TransferStatus::Completed: return "Completed";
-        default:                        return "Unknown";
-    }
-}
-
-// 字符串转换成任务状态
-TransferStatus TransferManager::stringToStatus(const std::string& str) {
-    if (str == "Ready")     return TransferStatus::Ready;
-    if (str == "Running")   return TransferStatus::Running;
-    if (str == "Error")     return TransferStatus::Error;
-    if (str == "Abort")     return TransferStatus::Abort;
-    if (str == "Completed") return TransferStatus::Completed;
-    return TransferStatus::Error;
-}
-
 // 本地编码转为 UTF-8
 std::string TransferManager::ansiToUtf8(const std::string& ansiStr) {
     // 1. ANSI → UTF-16
@@ -134,35 +95,46 @@
 }
 
 // 插入测试搬运记录
-void TransferManager::insertTestTransferRecord() {
-    if (nullptr != m_pDB) { 
-        int nCount = 10000;
+void TransferManager::insertTestTransferRecord(int nCount /*=10000*/) {
+    if (nullptr != m_pDB) {
+        static const char* STATUS_STR[] = {
+            "Unknown", "Ready", "Running", "Picking", "Placing",
+            "Restoring", "Error", "Abort", "Completed"
+        };
+
+        auto formatTime = [](const std::tm& time) {
+            char szTime[64];
+            strftime(szTime, sizeof(szTime), "%Y-%m-%d %H:%M:%S", &time);
+            return std::string(szTime);
+        };
+
+        std::time_t startTime = std::time(nullptr);
         for (int i = 0; i < nCount; ++i) {
             TransferData data;
             data.strClassID = "T-" + std::to_string(1000 + i);
-            data.strStatus = statusToString(static_cast<TransferStatus>(i % 5));
+            data.strStatus = STATUS_STR[i % 9];
 
-            std::time_t now = std::time(nullptr) + i * 60;  // 每条记录间隔1分钟
+            std::time_t baseTime = startTime + i * 60;
+            std::time_t pickTime = baseTime + 60;
+            std::time_t placeTime = pickTime + 60;
+            std::time_t endTime = placeTime + 60;
 
             std::tm tmCreate = {}, tmPick = {}, tmPlace = {}, tmEnd = {};
-            localtime_s(&tmCreate, &now);
-            localtime_s(&tmPick, &(now += 60));
-            localtime_s(&tmPlace, &(now += 60));
-            localtime_s(&tmEnd, &(now += 60));
+            localtime_s(&tmCreate, &baseTime);
+            localtime_s(&tmPick, &pickTime);
+            localtime_s(&tmPlace, &placeTime);
+            localtime_s(&tmEnd, &endTime);
 
-            char szTime[64];
-            strftime(szTime, sizeof(szTime), "%Y-%m-%d %H:%M:%S", &tmCreate);
-            data.strCreateTime = szTime;
-            strftime(szTime, sizeof(szTime), "%Y-%m-%d %H:%M:%S", &tmPick);
-            data.strPickTime = szTime;
-            strftime(szTime, sizeof(szTime), "%Y-%m-%d %H:%M:%S", &tmPlace);
-            data.strPlaceTime = szTime;
-            strftime(szTime, sizeof(szTime), "%Y-%m-%d %H:%M:%S", &tmEnd);
-            data.strEndTime = szTime;
-
+            data.strCreateTime = formatTime(tmCreate);
+            data.strPickTime = formatTime(tmPick);
+            data.strPlaceTime = formatTime(tmPlace);
+            data.strEndTime = formatTime(tmEnd);
             data.strDescription = "Mock transfer task " + std::to_string(i);
+
             int nRecordId = 0;
-            addTransferRecord(data, nRecordId);
+            if (!addTransferRecord(data, nRecordId)) {
+                std::cerr << "[Error] 插入第 " << i << " 条记录失败" << std::endl;
+            }
         }
 
         std::cout << "[Mock] 成功插入 " << nCount << " 条测试搬运记录。" << std::endl;
diff --git a/SourceCode/Bond/Servo/TransferManager.h b/SourceCode/Bond/Servo/TransferManager.h
index 9dde8c8..a6739db 100644
--- a/SourceCode/Bond/Servo/TransferManager.h
+++ b/SourceCode/Bond/Servo/TransferManager.h
@@ -8,17 +8,6 @@
 #include "Database.h"
 
 /**
- * 任务状态枚举类型
- */
-enum class TransferStatus {
-    Ready = 0,
-    Running,
-    Error,
-    Abort,
-    Completed
-};
-
-/**
  * 搬运记录结构体
  */
 struct TransferData {
@@ -51,7 +40,7 @@
 	/**
 	 * 插入测试搬运记录
 	 */
-    void insertTestTransferRecord();
+    void insertTestTransferRecord(int nCount = 10000);
 
     /**
      * 终止数据库连接
@@ -157,10 +146,6 @@
     TransferManager& operator=(const TransferManager&) = delete;
 
     // 内联函数
-    inline int statusToInt(TransferStatus status);
-    inline TransferStatus intToStatus(int value);
-    inline std::string statusToString(TransferStatus status);
-    inline TransferStatus stringToStatus(const std::string& str);
     inline std::string ansiToUtf8(const std::string& ansiStr);
     inline std::string utf8ToAnsi(const std::string& utf8Str);
 

--
Gitblit v1.9.3