add ledger update

This commit is contained in:
lnk
2025-09-25 16:36:04 +08:00
parent 5616d9096a
commit caf3c308c1
5 changed files with 298 additions and 72 deletions

View File

@@ -676,7 +676,7 @@ bool parseJsonMessageUD(const std::string& json_str, const std::string& output_d
send_reply_to_queue(guid, "1", "收到台账更新指令");
if (code_str == "add_terminal" || code_str == "ledger_modify") {
std::cout << "add or update ledger" << std::endl;
std::cout << "add or modify ledger" << std::endl;
if (messageBody.contains("data") && messageBody["data"].is_array()) {
for (const auto& item : messageBody["data"]) {
@@ -696,6 +696,9 @@ bool parseJsonMessageUD(const std::string& json_str, const std::string& output_d
int procNo = item.value("processNo", -1);
json_data.processNo = std::to_string(procNo);
//int procNum = item.value("maxProcessNum", -1);
//json_data.maxProcessNum = std::to_string(procNum);
//json_data.addr_str = item.value("ip", "");
//json_data.port = item.value("port", "");
//json_data.timestamp = item.value("updateTime", "");
@@ -713,19 +716,53 @@ bool parseJsonMessageUD(const std::string& json_str, const std::string& output_d
m.logical_device_seq = monitor_item.value("lineNo", "");
m.terminal_connect = monitor_item.value("ptType", "");
//m.timestamp = json_data.timestamp;
m.terminal_id = json_data.terminal_id;
m.terminal_id = monitor_item.value("deviceId", json_data.terminal_id);
m.CT1 = monitor_item.value("CT1", "");
m.CT2 = monitor_item.value("CT2", "");
m.PT1 = monitor_item.value("PT1", "");
m.PT2 = monitor_item.value("PT2", "");
}
}
print_terminal(json_data);
std::string xmlContent = prepare_update(code_str, json_data, guid);
/*std::string xmlContent = prepare_update(code_str, json_data, guid);
if (!xmlContent.empty()) {
char nodeid[20];
std::sprintf(nodeid, "%u", g_node_id);
std::string file_name = output_dir + "/" + nodeid + "_" + std::to_string(g_front_seg_index) + "_" + json_data.terminal_id + "_" + code_str + ".xml";
writeToFile(file_name, xmlContent);
}
}*/
if(code_str == "add_terminal"){
init_loggers_bydevid(target_dev.terminal_id);
terminal_devlist.push_back(json_data);
//调用接口添加到通讯列表
DeviceInfo device = make_device_from_terminal(json_data);
ClientManager::instance().add_device(device);
send_reply_to_queue(new_dev.guid, "2",
"终端 id: " + new_dev.terminal_id + " 台账添加成功");
}
else if(code_str == "ledger_modify"){
if(erase_one_terminals_by_id(json_data.terminal_id) == 1){
init_loggers_bydevid(target_dev.terminal_id);
terminal_devlist.push_back(json_data);
//调用接口添加到通讯列表
DeviceInfo device = make_device_from_terminal(json_data);
ClientManager::instance().add_device(device);
send_reply_to_queue(del_dev.guid, "2",
"终端 id: " + del_dev.terminal_id + " 台账修改成功");
}
else{
send_reply_to_queue(del_dev.guid, "2",
"终端 id: " + del_dev.terminal_id + " 台账修改失败");
}
}
}
}
} else if (code_str == "delete_terminal") {
@@ -736,13 +773,25 @@ bool parseJsonMessageUD(const std::string& json_str, const std::string& output_d
auto id = item.value("id", "");
json_data.terminal_id = id;
std::string xmlContent = prepare_update(code_str, json_data, guid);
/*std::string xmlContent = prepare_update(code_str, json_data, guid);
if (!xmlContent.empty()) {
char nodeid[20];
std::sprintf(nodeid, "%u", g_node_id);
std::string file_name = output_dir + "/" + nodeid + "_" + std::to_string(g_front_seg_index) + "_" + json_data.terminal_id + "_delete_terminal.xml";
writeToFile(file_name, xmlContent);
}
}*/
//直接加锁删除
std::lock_guard<std::mutex> lock(ledgermtx);
if(erase_one_terminals_by_id(json_data.terminal_id) == 1){
lientManager::instance().remove_device(json_data.terminal_id);
send_reply_to_queue(del_dev.guid, "2",
"终端 id: " + del_dev.terminal_id + " 台账删除成功");
}
else{
send_reply_to_queue(del_dev.guid, "2",
"终端 id: " + del_dev.terminal_id + " 台账删除失败");
}
}
}
} else {
@@ -1081,48 +1130,51 @@ std::string prepare_update(const std::string& code_str, const terminal_dev& json
add_indent(xmlStream, indentLevel);
xmlStream << "<id>" << json_data.terminal_id << "</id>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<ip>" << json_data.addr_str << "</ip>" << std::endl; // Assuming `addr_str` for IP
//add_indent(xmlStream, indentLevel);
//xmlStream << "<ip>" << json_data.addr_str << "</ip>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<devType>" << json_data.dev_type << "</devType>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<maintName>" << json_data.maint_name << "</maintName>" << std::endl;
//add_indent(xmlStream, indentLevel);
//xmlStream << "<maintName>" << json_data.maint_name << "</maintName>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<orgName>" << json_data.org_name << "</orgName>" << std::endl;
//add_indent(xmlStream, indentLevel);
//xmlStream << "<orgName>" << json_data.org_name << "</orgName>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<port>" << json_data.port << "</port>" << std::endl;
//add_indent(xmlStream, indentLevel);
//xmlStream << "<port>" << json_data.port << "</port>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<stationName>" << json_data.station_name << "</stationName>" << std::endl;
//add_indent(xmlStream, indentLevel);
//xmlStream << "<stationName>" << json_data.station_name << "</stationName>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<terminalCode>" << json_data.terminal_name << "</terminalCode>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<updateTime>" << json_data.timestamp << "</updateTime>" << std::endl; // Assuming `timestamp`
//add_indent(xmlStream, indentLevel);
//xmlStream << "<updateTime>" << json_data.timestamp << "</updateTime>" << std::endl; // Assuming `timestamp`
add_indent(xmlStream, indentLevel);
xmlStream << "<manufacturer>" << json_data.tmnl_factory << "</manufacturer>" << std::endl;
//add_indent(xmlStream, indentLevel);
//xmlStream << "<manufacturer>" << json_data.tmnl_factory << "</manufacturer>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<status>" << json_data.tmnl_status << "</status>" << std::endl;
//add_indent(xmlStream, indentLevel);
//xmlStream << "<status>" << json_data.tmnl_status << "</status>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<series>" << json_data.dev_series << "</series>" << std::endl;
//add_indent(xmlStream, indentLevel);
//xmlStream << "<series>" << json_data.dev_series << "</series>" << std::endl;
//lnk20250210
add_indent(xmlStream, indentLevel);
xmlStream << "<processNo>" << json_data.processNo << "</processNo>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<devKey>" << json_data.dev_key << "</devKey>" << std::endl;
xmlStream << "<Righttime>" << json_data.Righttime << "</Righttime>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<mac>" << json_data.mac << "</mac>" << std::endl;
//add_indent(xmlStream, indentLevel);
//xmlStream << "<devKey>" << json_data.dev_key << "</devKey>" << std::endl;
//add_indent(xmlStream, indentLevel);
//xmlStream << "<mac>" << json_data.mac << "</mac>" << std::endl;
// monitorData 部分
for (int i = 0; json_data.line[i].monitor_id[0] != '\0'; i++) {
@@ -1147,8 +1199,8 @@ std::string prepare_update(const std::string& code_str, const terminal_dev& json
add_indent(xmlStream, indentLevel);
xmlStream << "<ptType>" << monitor.terminal_connect << "</ptType>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<timestamp>" << monitor.timestamp << "</timestamp>" << std::endl;
//add_indent(xmlStream, indentLevel);
//xmlStream << "<timestamp>" << monitor.timestamp << "</timestamp>" << std::endl;
add_indent(xmlStream, indentLevel);
xmlStream << "<terminal_id>" << monitor.terminal_id << "</terminal_id>" << std::endl;
@@ -2016,4 +2068,7 @@ void connect_status_update(const std::string& id, int status)
// 调试打印
std::cout << "[connect_status_update] queued JSON:\n" << j.dump(4) << std::endl;
}
}