modify ledger
This commit is contained in:
@@ -1244,7 +1244,7 @@ void printTerminalDevMap(const std::map<std::string, terminal_dev>& terminal_dev
|
||||
|
||||
std::cout << "Key: " << key
|
||||
<< ", Terminal ID: " << dev.terminal_id
|
||||
<< ", Terminal Code: " << dev.terminal_code
|
||||
<< ", Terminal Code: " << dev.terminal_name
|
||||
<< ", Organization Name: "<< dev.org_name
|
||||
<< ", Maintenance Name: " << dev.maint_name
|
||||
<< ", Station Name: " << dev.station_name
|
||||
@@ -1258,6 +1258,9 @@ void printTerminalDevMap(const std::map<std::string, terminal_dev>& terminal_dev
|
||||
<< ", Address: " << dev.addr_str
|
||||
<< ", Port: " << dev.port
|
||||
<< ", Timestamp: " << dev.timestamp
|
||||
|
||||
<< ", mac: " << dev.mac
|
||||
|
||||
<< std::endl;
|
||||
|
||||
// 打印监测点信息
|
||||
@@ -1265,13 +1268,19 @@ void printTerminalDevMap(const std::map<std::string, terminal_dev>& terminal_dev
|
||||
const auto& m = dev.line[i];
|
||||
std::cout << " Monitor [" << i << "] "
|
||||
<< "ID: " << m.monitor_id
|
||||
<< ", Code: " << m.terminal_code
|
||||
<< ", Code: " << m.terminal_id
|
||||
<< ", Name: " << m.monitor_name
|
||||
<< ", Seq: " << m.logical_device_seq
|
||||
<< ", Voltage: "<< m.voltage_level
|
||||
<< ", Connect: "<< m.terminal_connect
|
||||
<< ", Timestamp:"<< m.timestamp
|
||||
<< ", Status: " << m.status
|
||||
|
||||
<< ", CT1: " << m.CT1
|
||||
<< ", CT2: " << m.CT2
|
||||
<< ", PT1: " << m.PT1
|
||||
<< ", PT2: " << m.PT2
|
||||
|
||||
<< std::endl;
|
||||
}
|
||||
}
|
||||
@@ -1357,7 +1366,7 @@ void parse_terminal_from_data(trigger_update_xml_t& trigger_update_xml,
|
||||
};
|
||||
|
||||
work_terminal.terminal_id = get_value("id");
|
||||
work_terminal.terminal_code = get_value("terminalCode");
|
||||
work_terminal.terminal_name = get_value("terminalCode");
|
||||
work_terminal.org_name = get_value("orgName");
|
||||
work_terminal.maint_name = get_value("maintName");
|
||||
work_terminal.station_name = get_value("stationName");
|
||||
@@ -1371,6 +1380,8 @@ void parse_terminal_from_data(trigger_update_xml_t& trigger_update_xml,
|
||||
work_terminal.port = get_value("port");
|
||||
work_terminal.timestamp = get_value("updateTime");
|
||||
|
||||
work_terminal.mac = get_value("mac");
|
||||
|
||||
for (tinyxml2::XMLElement* monitor = root->FirstChildElement("monitorData");
|
||||
monitor;
|
||||
monitor = monitor->NextSiblingElement("monitorData")) {
|
||||
@@ -1381,9 +1392,18 @@ void parse_terminal_from_data(trigger_update_xml_t& trigger_update_xml,
|
||||
mon.terminal_connect = monitor->FirstChildElement("ptType") ? monitor->FirstChildElement("ptType")->GetText() : "N/A";
|
||||
mon.logical_device_seq = monitor->FirstChildElement("lineNo") ? monitor->FirstChildElement("lineNo")->GetText() : "N/A";
|
||||
mon.timestamp = monitor->FirstChildElement("timestamp") ? monitor->FirstChildElement("timestamp")->GetText() : "N/A";
|
||||
mon.terminal_code = monitor->FirstChildElement("terminal_code") ? monitor->FirstChildElement("terminal_code")->GetText() : "N/A";
|
||||
mon.terminal_id = monitor->FirstChildElement("terminal_id") ? monitor->FirstChildElement("terminal_name")->GetText() : "N/A";
|
||||
mon.status = monitor->FirstChildElement("status") ? monitor->FirstChildElement("status")->GetText() : "N/A";
|
||||
|
||||
mon.CT1 = monitor->FirstChildElement("CT1") && monitor->FirstChildElement("CT1")->GetText()
|
||||
? atof(monitor->FirstChildElement("CT1")->GetText()) : 0.0;
|
||||
mon.CT2 = monitor->FirstChildElement("CT2") && monitor->FirstChildElement("CT2")->GetText()
|
||||
? atof(monitor->FirstChildElement("CT2")->GetText()) : 0.0;
|
||||
mon.PT1 = monitor->FirstChildElement("PT1") && monitor->FirstChildElement("PT1")->GetText()
|
||||
? atof(monitor->FirstChildElement("PT1")->GetText()) : 0.0;
|
||||
mon.PT2 = monitor->FirstChildElement("PT2") && monitor->FirstChildElement("PT2")->GetText()
|
||||
? atof(monitor->FirstChildElement("PT2")->GetText()) : 0.0;
|
||||
|
||||
work_terminal.line.push_back(mon);
|
||||
}
|
||||
|
||||
@@ -1536,9 +1556,9 @@ int update_one_terminal_ledger(const terminal_dev& update,terminal_dev& target_d
|
||||
target_dev.terminal_id = update.terminal_id;
|
||||
std::cout << "terminal_id: " << target_dev.terminal_id << std::endl;
|
||||
}
|
||||
if (!update.terminal_code.empty()) {
|
||||
target_dev.terminal_code = update.terminal_code;
|
||||
std::cout << "terminal_code: " << target_dev.terminal_code << std::endl;
|
||||
if (!update.terminal_name.empty()) {
|
||||
target_dev.terminal_name = update.terminal_name;
|
||||
std::cout << "terminal_name: " << target_dev.terminal_name << std::endl;
|
||||
}
|
||||
if (!update.tmnl_factory.empty()) {
|
||||
target_dev.tmnl_factory = update.tmnl_factory;
|
||||
@@ -1574,6 +1594,11 @@ int update_one_terminal_ledger(const terminal_dev& update,terminal_dev& target_d
|
||||
std::cout << "port: " << target_dev.port << std::endl;
|
||||
}
|
||||
|
||||
if (!update.mac.empty()) {
|
||||
target_dev.mac = update.mac;
|
||||
std::cout << "mac: " << target_dev.mac << std::endl;
|
||||
}
|
||||
|
||||
if (!update.timestamp.empty()) {
|
||||
struct tm timeinfo = {};
|
||||
if (sscanf(update.timestamp.c_str(), "%4d-%2d-%2d %2d:%2d:%2d",
|
||||
@@ -1609,9 +1634,14 @@ int update_one_terminal_ledger(const terminal_dev& update,terminal_dev& target_d
|
||||
m.voltage_level = mon.voltage_level;
|
||||
m.terminal_connect = mon.terminal_connect;
|
||||
m.status = mon.status;
|
||||
m.terminal_code = mon.terminal_code;
|
||||
m.terminal_id = mon.terminal_id;
|
||||
m.timestamp = mon.timestamp;
|
||||
|
||||
m.CT1 = mon.CT1;
|
||||
m.CT2 = mon.CT2;
|
||||
m.PT1 = mon.PT1;
|
||||
m.PT2 = mon.PT2;
|
||||
|
||||
if (m.terminal_connect != "0") {
|
||||
isdelta_flag = 1;
|
||||
std::cout << "monitor_id " << m.monitor_id << " uses delta wiring." << std::endl;
|
||||
@@ -2104,13 +2134,18 @@ void print_monitor(const ledger_monitor& mon) {
|
||||
auto safe = [](const std::string& s) { return s.empty() ? "N/A" : s; };
|
||||
|
||||
std::cout << "Monitor ID: " << safe(mon.monitor_id) << "\n";
|
||||
std::cout << "Terminal Code: " << safe(mon.terminal_code) << "\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";
|
||||
}
|
||||
|
||||
void print_terminal(const terminal_dev& tmnl) {
|
||||
@@ -2118,7 +2153,7 @@ void print_terminal(const terminal_dev& tmnl) {
|
||||
|
||||
std::cout << "GUID: " << safe(tmnl.guid) << "\n";
|
||||
std::cout << "Terminal ID: " << safe(tmnl.terminal_id) << "\n";
|
||||
std::cout << "Terminal Code: " << safe(tmnl.terminal_code)<< "\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";
|
||||
@@ -2131,6 +2166,8 @@ void print_terminal(const terminal_dev& tmnl) {
|
||||
std::cout << "Port: " << safe(tmnl.port) << "\n";
|
||||
std::cout << "Timestamp: " << safe(tmnl.timestamp) << "\n";
|
||||
|
||||
std::cout << "mac: " << safe(tmnl.mac) << "\n";
|
||||
|
||||
for (size_t i = 0; i < 10 && !tmnl.line[i].monitor_id.empty(); ++i) {
|
||||
std::cout << " Monitor " << (i + 1) << ":\n";
|
||||
print_monitor(tmnl.line[i]);
|
||||
@@ -2168,7 +2205,7 @@ void print_trigger_update_xml(const trigger_update_xml_t& trigger_update) {
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////解析映射文件
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////解析模板文件
|
||||
|
||||
//解析映射文件
|
||||
bool ParseXMLConfig2(int xml_flag, XmlConfig *cfg, std::list<CTopic*> *ctopiclist, const std::string& path)
|
||||
@@ -2615,3 +2652,79 @@ void Set_xml_nodeinfo()
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////数据转换函数
|
||||
// DataArrayItem to_json
|
||||
void to_json(nlohmann::json& j, const DataArrayItem& d) {
|
||||
j = nlohmann::json{
|
||||
{"DataAttr", d.DataAttr},
|
||||
{"DataTimeSec", d.DataTimeSec},
|
||||
{"DataTimeUSec", d.DataTimeUSec},
|
||||
{"DataTag", d.DataTag},
|
||||
{"Data", d.Data}
|
||||
};
|
||||
}
|
||||
|
||||
// MsgObj to_json
|
||||
void to_json(nlohmann::json& j, const MsgObj& m) {
|
||||
j = nlohmann::json{
|
||||
{"Cldid", m.Cldid},
|
||||
{"DataType", m.DataType},
|
||||
{"DataAttr", m.DataAttr},
|
||||
{"DsNameIdx", m.DsNameIdx},
|
||||
{"DataArray", m.DataArray}
|
||||
};
|
||||
}
|
||||
|
||||
// FullObj to_json
|
||||
void to_json(nlohmann::json& j, const FullObj& f) {
|
||||
j = nlohmann::json{
|
||||
{"Mid", f.Mid},
|
||||
{"Did", f.Did},
|
||||
{"Pri", f.Pri},
|
||||
{"Type", f.Type},
|
||||
{"Msg", f.Msg}
|
||||
};
|
||||
}
|
||||
std::string generate_json(
|
||||
int Mid,
|
||||
int Did,
|
||||
int Pri,
|
||||
int Type,
|
||||
int Cldid,
|
||||
int DataType,
|
||||
int DataAttr,
|
||||
int DsNameIdx,
|
||||
const std::vector<DataArrayItem>& dataArray //构造出array后调用这个函数
|
||||
) {
|
||||
FullObj fobj;
|
||||
fobj.Mid = Mid;
|
||||
fobj.Did = Did;
|
||||
fobj.Pri = Pri;
|
||||
fobj.Type = Type;
|
||||
fobj.Msg.Cldid = Cldid;
|
||||
fobj.Msg.DataType = DataType;
|
||||
fobj.Msg.DataAttr = DataAttr;
|
||||
fobj.Msg.DsNameIdx = DsNameIdx;
|
||||
fobj.Msg.DataArray = dataArray;
|
||||
nlohmann::json j = fobj;
|
||||
return j.dump(); // 输出标准 json 字符串
|
||||
}
|
||||
|
||||
void upload_data_test(){
|
||||
std::vector<DataArrayItem> arr;
|
||||
arr.push_back({1, 1725477660, 0, 1, "xxxx"});
|
||||
arr.push_back({2, 1691741340, 0, 1, "yyyy"});
|
||||
|
||||
std::string js = generate_json(
|
||||
-1, 2, 1, 4866, 1, 0, 2, 1, arr
|
||||
);
|
||||
std::cout << js << std::endl;
|
||||
|
||||
queue_data_t data;
|
||||
data.monitor_no = 1;
|
||||
data.strTopic = TOPIC_ALARM;
|
||||
data.strText = js;
|
||||
data.mp_id = "test";
|
||||
std::lock_guard<std::mutex> lock(queue_data_list_mutex);
|
||||
queue_data_list.push_back(data);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user