From fbbb96a64a72d84cece78735d21c7df368e9c4b2 Mon Sep 17 00:00:00 2001 From: lnk Date: Sat, 11 Oct 2025 15:57:22 +0800 Subject: [PATCH] fix ledger update --- LFtid1056/cloudfront/code/cfg_parser.cpp | 6 ++++++ LFtid1056/cloudfront/code/interface.cpp | 2 +- LFtid1056/cloudfront/code/rocketmq.cpp | 21 +++++++++++++-------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/LFtid1056/cloudfront/code/cfg_parser.cpp b/LFtid1056/cloudfront/code/cfg_parser.cpp index 7bd87cc..4d43efa 100644 --- a/LFtid1056/cloudfront/code/cfg_parser.cpp +++ b/LFtid1056/cloudfront/code/cfg_parser.cpp @@ -5119,11 +5119,17 @@ void enqueue_realtime_pq(const RealtagPqDate_float& realdata, std::lock_guard lk(g_last_ts_mtx); auto it = g_last_ts_by_devid.find(devid); if (it != g_last_ts_by_devid.end() && it->second == data_time) { + + std::cout << "[enqueue_realtime_pq] duplicate timestamp, devid=" + << devid << " time=" << data_time << std::endl; // 同一设备与上次时间相同 → 丢弃本次 return; } // 记录本次时间 g_last_ts_by_devid[devid] = data_time; + + std::cout << "[enqueue_realtime_pq] record timestamp, devid=" + << devid << " time=" << data_time << std::endl; } std::vector arr; diff --git a/LFtid1056/cloudfront/code/interface.cpp b/LFtid1056/cloudfront/code/interface.cpp index f80f708..dd64038 100644 --- a/LFtid1056/cloudfront/code/interface.cpp +++ b/LFtid1056/cloudfront/code/interface.cpp @@ -516,7 +516,7 @@ int get_max_stat_data_index(const std::string& filepath) { while (std::getline(file, line)) { // 查找符合要求的行 - if (line.find("pt61850netd_pqfe -d cfg_stat_data -s") != std::string::npos) { + if (line.find("cloud-front") != std::string::npos) { // 找到 -s 参数位置 std::size_t pos = line.find("-s"); if (pos != std::string::npos) { diff --git a/LFtid1056/cloudfront/code/rocketmq.cpp b/LFtid1056/cloudfront/code/rocketmq.cpp index 695036e..389a7dd 100644 --- a/LFtid1056/cloudfront/code/rocketmq.cpp +++ b/LFtid1056/cloudfront/code/rocketmq.cpp @@ -682,7 +682,7 @@ bool parseJsonMessageUD(const std::string& json_str, const std::string& output_d if (messageBody.contains("data") && messageBody["data"].is_array()) { for (const auto& item : messageBody["data"]) { - terminal_dev json_data; + terminal_dev json_data{}; json_data.terminal_id = item.value("id", ""); json_data.terminal_name = item.value("name", ""); @@ -695,7 +695,11 @@ bool parseJsonMessageUD(const std::string& json_str, const std::string& output_d //json_data.dev_key = item.value("devKey", ""); //json_data.dev_series = item.value("series", ""); - int procNo = item.value("processNo", -1); + int procNo = -1; // 兼容 item.processNo 类型 + if (item.contains("processNo")) { + if (item["processNo"].is_number_integer()) procNo = item["processNo"].get(); + else if (item["processNo"].is_string()) { try { procNo = std::stoi(item["processNo"].get()); } catch(...) { procNo = -1; } } + } json_data.processNo = std::to_string(procNo); //int procNum = item.value("maxProcessNum", -1); @@ -707,9 +711,10 @@ bool parseJsonMessageUD(const std::string& json_str, const std::string& output_d json_data.Righttime = item.value("Righttime", ""); if (item.contains("monitorData") && item["monitorData"].is_array()) { - int j = 0; + size_t j = 0; + constexpr size_t kMaxLines = std::extent::value; // 如果是 C 数组 for (const auto& monitor_item : item["monitorData"]) { - if (j >= 10) break; + if (j >= kMaxLines) break; auto& m = json_data.line[j++]; m.monitor_id = monitor_item.value("id", ""); m.monitor_name = monitor_item.value("name", ""); @@ -1645,7 +1650,7 @@ void rocketmq_test_rt(Front* front)//用来测试实时数据 data.strText = std::string(buffer.str()); data.mp_id = "123123"; - data.tag = G_ROCKETMQ_TAG_TEST; + data.tag = FRONT_INST; data.key = G_ROCKETMQ_KEY_TEST; std::lock_guard lock(queue_data_list_mutex); queue_data_list.push_back(data); @@ -1669,7 +1674,7 @@ void rocketmq_test_ud(Front* front)//用来测试台账更新 data.strText = std::string(buffer.str()); data.mp_id = "123123"; - data.tag = G_ROCKETMQ_TAG_TEST; + data.tag = FRONT_INST; data.key = G_ROCKETMQ_KEY_TEST; std::lock_guard lock(queue_data_list_mutex); queue_data_list.push_back(data); @@ -1693,7 +1698,7 @@ void rocketmq_test_set(Front* front)//用来测试进程控制脚本 data.strText = std::string(buffer.str()); data.mp_id = "123123"; - data.tag = G_ROCKETMQ_TAG_TEST; + data.tag = FRONT_INST; data.key = G_ROCKETMQ_KEY_TEST; std::lock_guard lock(queue_data_list_mutex); queue_data_list.push_back(data); @@ -1717,7 +1722,7 @@ void rocketmq_test_rc(Front* front)//用来测试补招 data.strText = std::string(buffer.str()); data.mp_id = "123123"; - data.tag = G_ROCKETMQ_TAG_TEST; + data.tag = FRONT_INST; data.key = G_ROCKETMQ_KEY_TEST; std::lock_guard lock(queue_data_list_mutex); queue_data_list.push_back(data);