modify ledger update and rtdata
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include <map>
|
||||
#include <mutex>
|
||||
#include <sstream>
|
||||
#include <iostream>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -203,6 +204,7 @@ public:
|
||||
class update_dev
|
||||
{
|
||||
public:
|
||||
std::string guid; // ★新增:供发送回复使用
|
||||
|
||||
std::string terminal_id;
|
||||
std::string terminal_name;
|
||||
@@ -222,7 +224,7 @@ public:
|
||||
std::string maxProcessNum;
|
||||
std::string mac; // 装置MAC地址,接口中从addr_str获取,因为ip和mac放同一位置
|
||||
|
||||
std::vector<ledger_monitor> line;
|
||||
std::vector<update_monitor> line;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////台账更新用
|
||||
@@ -529,7 +531,6 @@ std::string get_current_time();
|
||||
|
||||
bool is_blank(const std::string& str);
|
||||
|
||||
void print_terminal(const terminal_dev& tmnl);
|
||||
void printTerminalDevMap(const std::map<std::string, terminal_dev>& terminal_dev_map);
|
||||
|
||||
void upload_data_test();
|
||||
@@ -728,7 +729,72 @@ size_t erase_one_terminals_by_id(const std::string& terminal_id);
|
||||
//转换结构
|
||||
DeviceInfo make_device_from_terminal(const terminal_dev& t);
|
||||
|
||||
//小工具
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////模板打印
|
||||
// ===== 通用打印实现(模板) =====
|
||||
|
||||
template <typename Mon>
|
||||
inline void print_monitor_common(const Mon& mon) {
|
||||
auto safe = [](const std::string& s) -> const std::string& {
|
||||
static const std::string NA = "N/A";
|
||||
return s.empty() ? NA : s;
|
||||
};
|
||||
|
||||
std::cout << "Monitor ID: " << safe(mon.monitor_id) << "\n";
|
||||
std::cout << "Terminal ID: " << safe(mon.terminal_id) << "\n";
|
||||
std::cout << "Monitor Name: " << safe(mon.monitor_name) << "\n";
|
||||
std::cout << "Logical Device Sequence: " << safe(mon.logical_device_seq) << "\n";
|
||||
std::cout << "Voltage Level: " << safe(mon.voltage_level) << "\n";
|
||||
std::cout << "Terminal Connect: " << safe(mon.terminal_connect) << "\n";
|
||||
std::cout << "Timestamp: " << safe(mon.timestamp) << "\n";
|
||||
std::cout << "Status: " << safe(mon.status) << "\n";
|
||||
std::cout << "CT1: " << mon.CT1 << "\n";
|
||||
std::cout << "CT2: " << mon.CT2 << "\n";
|
||||
std::cout << "PT1: " << mon.PT1 << "\n";
|
||||
std::cout << "PT2: " << mon.PT2 << "\n";
|
||||
}
|
||||
|
||||
template <typename Dev>
|
||||
inline void print_terminal_common(const Dev& tmnl) {
|
||||
auto safe = [](const std::string& s) -> const std::string& {
|
||||
static const std::string NA = "N/A";
|
||||
return s.empty() ? NA : s;
|
||||
};
|
||||
|
||||
std::cout << "GUID: " << safe(tmnl.guid) << "\n";
|
||||
std::cout << "Terminal ID: " << safe(tmnl.terminal_id) << "\n";
|
||||
std::cout << "Terminal Code: " << safe(tmnl.terminal_name) << "\n";
|
||||
std::cout << "Organization Name: "<< safe(tmnl.org_name) << "\n";
|
||||
std::cout << "Maintenance Name: " << safe(tmnl.maint_name) << "\n";
|
||||
std::cout << "Station Name: " << safe(tmnl.station_name) << "\n";
|
||||
std::cout << "Factory Name: " << safe(tmnl.tmnl_factory) << "\n";
|
||||
std::cout << "Terminal Status: " << safe(tmnl.tmnl_status) << "\n";
|
||||
std::cout << "Device Type: " << safe(tmnl.dev_type) << "\n";
|
||||
std::cout << "Device Key: " << safe(tmnl.dev_key) << "\n";
|
||||
std::cout << "Device Series: " << safe(tmnl.dev_series) << "\n";
|
||||
std::cout << "Address: " << safe(tmnl.addr_str) << "\n";
|
||||
std::cout << "Port: " << safe(tmnl.port) << "\n";
|
||||
std::cout << "Timestamp: " << safe(tmnl.timestamp) << "\n";
|
||||
std::cout << "Righttime: " << safe(tmnl.Righttime) << "\n";
|
||||
std::cout << "mac: " << safe(tmnl.mac) << "\n";
|
||||
|
||||
// 安全遍历最多前 10 个测点(不越界),且跳过空 monitor_id 的项
|
||||
const size_t n = std::min<size_t>(tmnl.line.size(), 10);
|
||||
for (size_t i = 0; i < n; ++i) {
|
||||
if (tmnl.line[i].monitor_id.empty()) continue;
|
||||
std::cout << " Monitor " << (i + 1) << ":\n";
|
||||
print_monitor_common(tmnl.line[i]); // 模板会自动匹配 update/ledger 的 monitor
|
||||
}
|
||||
}
|
||||
|
||||
// ===== 薄包装重载(保持原有函数名不变)=====
|
||||
|
||||
inline void print_monitor(const update_monitor& mon) { print_monitor_common(mon); }
|
||||
inline void print_monitor(const ledger_monitor& mon) { print_monitor_common(mon); }
|
||||
|
||||
inline void print_terminal(const update_dev& tmnl) { print_terminal_common(tmnl); }
|
||||
inline void print_terminal(const terminal_dev& tmnl) { print_terminal_common(tmnl); }
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////小工具
|
||||
inline std::string trim_cstr(const char* s, size_t n) {
|
||||
if (!s) return {};
|
||||
size_t end = 0;
|
||||
|
||||
Reference in New Issue
Block a user