mrDarker
2025-09-04 1c8098f74227411b5417c560eb7e6d7c0a61ae6e
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;