modify ledger
This commit is contained in:
75
.vscode/settings.json
vendored
75
.vscode/settings.json
vendored
@@ -55,5 +55,78 @@
|
|||||||
"C_Cpp_Runner.useLeakSanitizer": false,
|
"C_Cpp_Runner.useLeakSanitizer": false,
|
||||||
"C_Cpp_Runner.showCompilationTime": false,
|
"C_Cpp_Runner.showCompilationTime": false,
|
||||||
"C_Cpp_Runner.useLinkTimeOptimization": false,
|
"C_Cpp_Runner.useLinkTimeOptimization": false,
|
||||||
"C_Cpp_Runner.msvcSecureNoWarnings": false
|
"C_Cpp_Runner.msvcSecureNoWarnings": false,
|
||||||
|
"files.associations": {
|
||||||
|
"any": "cpp",
|
||||||
|
"array": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"bit": "cpp",
|
||||||
|
"cctype": "cpp",
|
||||||
|
"charconv": "cpp",
|
||||||
|
"chrono": "cpp",
|
||||||
|
"clocale": "cpp",
|
||||||
|
"cmath": "cpp",
|
||||||
|
"codecvt": "cpp",
|
||||||
|
"compare": "cpp",
|
||||||
|
"concepts": "cpp",
|
||||||
|
"condition_variable": "cpp",
|
||||||
|
"csignal": "cpp",
|
||||||
|
"cstdarg": "cpp",
|
||||||
|
"cstddef": "cpp",
|
||||||
|
"cstdint": "cpp",
|
||||||
|
"cstdio": "cpp",
|
||||||
|
"cstdlib": "cpp",
|
||||||
|
"cstring": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"cwchar": "cpp",
|
||||||
|
"cwctype": "cpp",
|
||||||
|
"deque": "cpp",
|
||||||
|
"forward_list": "cpp",
|
||||||
|
"list": "cpp",
|
||||||
|
"map": "cpp",
|
||||||
|
"set": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"unordered_map": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"exception": "cpp",
|
||||||
|
"algorithm": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"iterator": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"memory_resource": "cpp",
|
||||||
|
"numeric": "cpp",
|
||||||
|
"optional": "cpp",
|
||||||
|
"random": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"string_view": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"utility": "cpp",
|
||||||
|
"format": "cpp",
|
||||||
|
"fstream": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"iomanip": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"iostream": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"mutex": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"numbers": "cpp",
|
||||||
|
"ostream": "cpp",
|
||||||
|
"ranges": "cpp",
|
||||||
|
"semaphore": "cpp",
|
||||||
|
"span": "cpp",
|
||||||
|
"sstream": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"stop_token": "cpp",
|
||||||
|
"streambuf": "cpp",
|
||||||
|
"text_encoding": "cpp",
|
||||||
|
"thread": "cpp",
|
||||||
|
"cinttypes": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"valarray": "cpp",
|
||||||
|
"variant": "cpp"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1244,7 +1244,7 @@ void printTerminalDevMap(const std::map<std::string, terminal_dev>& terminal_dev
|
|||||||
|
|
||||||
std::cout << "Key: " << key
|
std::cout << "Key: " << key
|
||||||
<< ", Terminal ID: " << dev.terminal_id
|
<< ", Terminal ID: " << dev.terminal_id
|
||||||
<< ", Terminal Code: " << dev.terminal_code
|
<< ", Terminal Code: " << dev.terminal_name
|
||||||
<< ", Organization Name: "<< dev.org_name
|
<< ", Organization Name: "<< dev.org_name
|
||||||
<< ", Maintenance Name: " << dev.maint_name
|
<< ", Maintenance Name: " << dev.maint_name
|
||||||
<< ", Station Name: " << dev.station_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
|
<< ", Address: " << dev.addr_str
|
||||||
<< ", Port: " << dev.port
|
<< ", Port: " << dev.port
|
||||||
<< ", Timestamp: " << dev.timestamp
|
<< ", Timestamp: " << dev.timestamp
|
||||||
|
|
||||||
|
<< ", mac: " << dev.mac
|
||||||
|
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
|
||||||
// 打印监测点信息
|
// 打印监测点信息
|
||||||
@@ -1265,13 +1268,19 @@ void printTerminalDevMap(const std::map<std::string, terminal_dev>& terminal_dev
|
|||||||
const auto& m = dev.line[i];
|
const auto& m = dev.line[i];
|
||||||
std::cout << " Monitor [" << i << "] "
|
std::cout << " Monitor [" << i << "] "
|
||||||
<< "ID: " << m.monitor_id
|
<< "ID: " << m.monitor_id
|
||||||
<< ", Code: " << m.terminal_code
|
<< ", Code: " << m.terminal_id
|
||||||
<< ", Name: " << m.monitor_name
|
<< ", Name: " << m.monitor_name
|
||||||
<< ", Seq: " << m.logical_device_seq
|
<< ", Seq: " << m.logical_device_seq
|
||||||
<< ", Voltage: "<< m.voltage_level
|
<< ", Voltage: "<< m.voltage_level
|
||||||
<< ", Connect: "<< m.terminal_connect
|
<< ", Connect: "<< m.terminal_connect
|
||||||
<< ", Timestamp:"<< m.timestamp
|
<< ", Timestamp:"<< m.timestamp
|
||||||
<< ", Status: " << m.status
|
<< ", Status: " << m.status
|
||||||
|
|
||||||
|
<< ", CT1: " << m.CT1
|
||||||
|
<< ", CT2: " << m.CT2
|
||||||
|
<< ", PT1: " << m.PT1
|
||||||
|
<< ", PT2: " << m.PT2
|
||||||
|
|
||||||
<< std::endl;
|
<< 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_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.org_name = get_value("orgName");
|
||||||
work_terminal.maint_name = get_value("maintName");
|
work_terminal.maint_name = get_value("maintName");
|
||||||
work_terminal.station_name = get_value("stationName");
|
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.port = get_value("port");
|
||||||
work_terminal.timestamp = get_value("updateTime");
|
work_terminal.timestamp = get_value("updateTime");
|
||||||
|
|
||||||
|
work_terminal.mac = get_value("mac");
|
||||||
|
|
||||||
for (tinyxml2::XMLElement* monitor = root->FirstChildElement("monitorData");
|
for (tinyxml2::XMLElement* monitor = root->FirstChildElement("monitorData");
|
||||||
monitor;
|
monitor;
|
||||||
monitor = monitor->NextSiblingElement("monitorData")) {
|
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.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.logical_device_seq = monitor->FirstChildElement("lineNo") ? monitor->FirstChildElement("lineNo")->GetText() : "N/A";
|
||||||
mon.timestamp = monitor->FirstChildElement("timestamp") ? monitor->FirstChildElement("timestamp")->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.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);
|
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;
|
target_dev.terminal_id = update.terminal_id;
|
||||||
std::cout << "terminal_id: " << target_dev.terminal_id << std::endl;
|
std::cout << "terminal_id: " << target_dev.terminal_id << std::endl;
|
||||||
}
|
}
|
||||||
if (!update.terminal_code.empty()) {
|
if (!update.terminal_name.empty()) {
|
||||||
target_dev.terminal_code = update.terminal_code;
|
target_dev.terminal_name = update.terminal_name;
|
||||||
std::cout << "terminal_code: " << target_dev.terminal_code << std::endl;
|
std::cout << "terminal_name: " << target_dev.terminal_name << std::endl;
|
||||||
}
|
}
|
||||||
if (!update.tmnl_factory.empty()) {
|
if (!update.tmnl_factory.empty()) {
|
||||||
target_dev.tmnl_factory = update.tmnl_factory;
|
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;
|
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()) {
|
if (!update.timestamp.empty()) {
|
||||||
struct tm timeinfo = {};
|
struct tm timeinfo = {};
|
||||||
if (sscanf(update.timestamp.c_str(), "%4d-%2d-%2d %2d:%2d:%2d",
|
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.voltage_level = mon.voltage_level;
|
||||||
m.terminal_connect = mon.terminal_connect;
|
m.terminal_connect = mon.terminal_connect;
|
||||||
m.status = mon.status;
|
m.status = mon.status;
|
||||||
m.terminal_code = mon.terminal_code;
|
m.terminal_id = mon.terminal_id;
|
||||||
m.timestamp = mon.timestamp;
|
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") {
|
if (m.terminal_connect != "0") {
|
||||||
isdelta_flag = 1;
|
isdelta_flag = 1;
|
||||||
std::cout << "monitor_id " << m.monitor_id << " uses delta wiring." << std::endl;
|
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; };
|
auto safe = [](const std::string& s) { return s.empty() ? "N/A" : s; };
|
||||||
|
|
||||||
std::cout << "Monitor ID: " << safe(mon.monitor_id) << "\n";
|
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 << "Monitor Name: " << safe(mon.monitor_name) << "\n";
|
||||||
std::cout << "Logical Device Sequence: " << safe(mon.logical_device_seq) << "\n";
|
std::cout << "Logical Device Sequence: " << safe(mon.logical_device_seq) << "\n";
|
||||||
std::cout << "Voltage Level: " << safe(mon.voltage_level) << "\n";
|
std::cout << "Voltage Level: " << safe(mon.voltage_level) << "\n";
|
||||||
std::cout << "Terminal Connect: " << safe(mon.terminal_connect) << "\n";
|
std::cout << "Terminal Connect: " << safe(mon.terminal_connect) << "\n";
|
||||||
std::cout << "Timestamp: " << safe(mon.timestamp) << "\n";
|
std::cout << "Timestamp: " << safe(mon.timestamp) << "\n";
|
||||||
std::cout << "Status: " << safe(mon.status) << "\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) {
|
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 << "GUID: " << safe(tmnl.guid) << "\n";
|
||||||
std::cout << "Terminal ID: " << safe(tmnl.terminal_id) << "\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 << "Organization Name: "<< safe(tmnl.org_name) << "\n";
|
||||||
std::cout << "Maintenance Name: " << safe(tmnl.maint_name) << "\n";
|
std::cout << "Maintenance Name: " << safe(tmnl.maint_name) << "\n";
|
||||||
std::cout << "Station Name: " << safe(tmnl.station_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 << "Port: " << safe(tmnl.port) << "\n";
|
||||||
std::cout << "Timestamp: " << safe(tmnl.timestamp) << "\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) {
|
for (size_t i = 0; i < 10 && !tmnl.line[i].monitor_id.empty(); ++i) {
|
||||||
std::cout << " Monitor " << (i + 1) << ":\n";
|
std::cout << " Monitor " << (i + 1) << ":\n";
|
||||||
print_monitor(tmnl.line[i]);
|
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)
|
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);
|
||||||
|
}
|
||||||
|
|||||||
@@ -133,7 +133,6 @@ void SendJsonAPI_web(const std::string& strUrl, //接口路径
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////上传文件接口
|
////////////////////////////////////////////////////////////////////////////////////////////////////////上传文件接口
|
||||||
|
|
||||||
//处理文件上传响应
|
//处理文件上传响应
|
||||||
@@ -609,7 +608,7 @@ int terminal_ledger_web(std::map<std::string, terminal_dev>& terminal_dev_map,
|
|||||||
};
|
};
|
||||||
dev.terminal_id = safe_str(item, "id");
|
dev.terminal_id = safe_str(item, "id");
|
||||||
dev.addr_str = safe_str(item, "ip");
|
dev.addr_str = safe_str(item, "ip");
|
||||||
dev.terminal_code = safe_str(item, "name");
|
dev.terminal_name = safe_str(item, "name");
|
||||||
dev.org_name = safe_str(item, "org_name");
|
dev.org_name = safe_str(item, "org_name");
|
||||||
dev.maint_name = safe_str(item, "maint_name");
|
dev.maint_name = safe_str(item, "maint_name");
|
||||||
dev.station_name = safe_str(item, "stationName");
|
dev.station_name = safe_str(item, "stationName");
|
||||||
@@ -623,18 +622,26 @@ int terminal_ledger_web(std::map<std::string, terminal_dev>& terminal_dev_map,
|
|||||||
dev.processNo = safe_str(item, "processNo");
|
dev.processNo = safe_str(item, "processNo");
|
||||||
dev.maxProcessNum = safe_str(item, "maxProcessNum");
|
dev.maxProcessNum = safe_str(item, "maxProcessNum");
|
||||||
|
|
||||||
|
dev.mac = safe_str(item, "mac");//添加mac
|
||||||
|
|
||||||
if (item.contains("monitorData") && item["monitorData"].is_array()) {
|
if (item.contains("monitorData") && item["monitorData"].is_array()) {
|
||||||
for (auto& mon : item["monitorData"]) {
|
for (auto& mon : item["monitorData"]) {
|
||||||
if (dev.line.size() >= 10) break;
|
if (dev.line.size() >= 10) break;
|
||||||
ledger_monitor m;
|
ledger_monitor m;
|
||||||
m.monitor_id = safe_str(mon, "id");
|
m.monitor_id = safe_str(mon, "id");
|
||||||
m.terminal_code = safe_str(mon, "terminal_code");
|
m.terminal_id = safe_str(mon, "terminal_id");
|
||||||
m.monitor_name = safe_str(mon, "name");
|
m.monitor_name = safe_str(mon, "name");
|
||||||
m.logical_device_seq = safe_str(mon, "lineNo");
|
m.logical_device_seq = safe_str(mon, "lineNo");
|
||||||
m.voltage_level = safe_str(mon, "voltageLevel");
|
m.voltage_level = safe_str(mon, "voltageLevel");
|
||||||
m.terminal_connect = safe_str(mon, "ptType");
|
m.terminal_connect = safe_str(mon, "ptType");
|
||||||
m.timestamp = safe_str(mon, "updateTime");
|
m.timestamp = safe_str(mon, "updateTime");
|
||||||
m.status = safe_str(mon, "status");
|
m.status = safe_str(mon, "status");
|
||||||
|
|
||||||
|
m.CT1 = mon.value("CT1", 0.0);
|
||||||
|
m.CT2 = mon.value("CT2", 0.0);
|
||||||
|
m.PT1 = mon.value("PT1", 0.0);
|
||||||
|
m.PT2 = mon.value("PT2", 0.0);
|
||||||
|
|
||||||
dev.line.push_back(m);
|
dev.line.push_back(m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,11 @@
|
|||||||
#include <list>
|
#include <list>
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <mutex>
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "nlohmann/json.hpp"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@@ -47,23 +52,28 @@ class ledger_monitor
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string monitor_id; //监测点id
|
std::string monitor_id; //监测点id
|
||||||
std::string terminal_code; //监测点
|
std::string terminal_id; //监测点
|
||||||
std::string monitor_name; //监测点名
|
std::string monitor_name; //监测点名
|
||||||
std::string logical_device_seq; //监测点序号
|
std::string logical_device_seq; //监测点序号
|
||||||
std::string voltage_level; //监测点电压等级
|
std::string voltage_level; //监测点电压等级
|
||||||
std::string terminal_connect; //监测点接线方式
|
std::string terminal_connect; //监测点接线方式
|
||||||
std::string timestamp; //更新时间
|
std::string timestamp; //更新时间
|
||||||
std::string status; //监测点状态
|
std::string status; //监测点状态
|
||||||
|
|
||||||
|
double PT1; // 电压变比1
|
||||||
|
double PT2; // 电压变比2
|
||||||
|
double CT1; // 电流变比1
|
||||||
|
double CT2; // 电流变比2
|
||||||
};
|
};
|
||||||
|
|
||||||
//终端台账
|
//终端台账
|
||||||
class terminal_dev
|
class terminal_dev
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string guid;
|
std::string guid; //台账更新回复用
|
||||||
|
|
||||||
std::string terminal_id;
|
std::string terminal_id;
|
||||||
std::string terminal_code;
|
std::string terminal_name;
|
||||||
std::string org_name;
|
std::string org_name;
|
||||||
std::string maint_name;
|
std::string maint_name;
|
||||||
std::string station_name;
|
std::string station_name;
|
||||||
@@ -78,6 +88,8 @@ public:
|
|||||||
std::string processNo;
|
std::string processNo;
|
||||||
std::string maxProcessNum;
|
std::string maxProcessNum;
|
||||||
|
|
||||||
|
std::string mac; // 装置MAC地址
|
||||||
|
|
||||||
std::vector<ledger_monitor> line;
|
std::vector<ledger_monitor> line;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -314,9 +326,12 @@ bool is_blank(const std::string& str);
|
|||||||
void print_terminal(const terminal_dev& tmnl);
|
void print_terminal(const terminal_dev& tmnl);
|
||||||
void printTerminalDevMap(const std::map<std::string, terminal_dev>& terminal_dev_map);
|
void printTerminalDevMap(const std::map<std::string, terminal_dev>& terminal_dev_map);
|
||||||
|
|
||||||
|
void upload_data_test();
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////mq
|
////////////////////////////////////////////////////////////////////////////////mq
|
||||||
|
|
||||||
|
extern std::mutex queue_data_list_mutex;
|
||||||
|
extern std::list<queue_data_t> queue_data_list;
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////主函数类声明
|
/////////////////////////////////////////////////////////////////////////////////主函数类声明
|
||||||
|
|
||||||
@@ -353,6 +368,41 @@ typedef struct {
|
|||||||
pthread_mutex_t lock; // 线程专用互斥锁
|
pthread_mutex_t lock; // 线程专用互斥锁
|
||||||
} thread_info_t;
|
} thread_info_t;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////上送数据的json格式
|
||||||
|
// 单条 DataArray 数据
|
||||||
|
struct DataArrayItem {
|
||||||
|
int DataAttr;
|
||||||
|
int DataTimeSec;
|
||||||
|
int DataTimeUSec;
|
||||||
|
int DataTag;
|
||||||
|
std::string Data;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Msg 对象
|
||||||
|
struct MsgObj {
|
||||||
|
int Cldid;
|
||||||
|
int DataType;
|
||||||
|
int DataAttr;
|
||||||
|
int DsNameIdx;
|
||||||
|
std::vector<DataArrayItem> DataArray;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 整体
|
||||||
|
struct FullObj {
|
||||||
|
int Mid;
|
||||||
|
int Did;
|
||||||
|
int Pri;
|
||||||
|
int Type;
|
||||||
|
MsgObj Msg;
|
||||||
|
};
|
||||||
|
|
||||||
|
// nlohmann序列化接口
|
||||||
|
void to_json(nlohmann::json& j, const DataArrayItem& d);
|
||||||
|
void to_json(nlohmann::json& j, const MsgObj& m);
|
||||||
|
void to_json(nlohmann::json& j, const FullObj& f);
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -218,11 +218,11 @@ std::string get_parent_directory() {
|
|||||||
//初始化日志
|
//初始化日志
|
||||||
init_loggers();
|
init_loggers();
|
||||||
|
|
||||||
//读取模型,下载文件
|
//读取模型,下载模板文件
|
||||||
parse_model_cfg_web();
|
parse_model_cfg_web();
|
||||||
|
|
||||||
//解析文件
|
//解析模板文件
|
||||||
Set_xml_nodeinfo();
|
//Set_xml_nodeinfo();
|
||||||
|
|
||||||
StartFrontThread(); //开启主线程
|
StartFrontThread(); //开启主线程
|
||||||
|
|
||||||
|
|||||||
@@ -754,7 +754,7 @@ bool parseJsonMessageUD(const std::string& json_str, const std::string& output_d
|
|||||||
terminal_dev json_data;
|
terminal_dev json_data;
|
||||||
|
|
||||||
json_data.terminal_id = item.value("id", "");
|
json_data.terminal_id = item.value("id", "");
|
||||||
json_data.terminal_code = item.value("name", "");
|
json_data.terminal_name = item.value("name", "");
|
||||||
json_data.org_name = item.value("org_name", "");
|
json_data.org_name = item.value("org_name", "");
|
||||||
json_data.maint_name = item.value("maint_name", "");
|
json_data.maint_name = item.value("maint_name", "");
|
||||||
json_data.station_name = item.value("stationName", "");
|
json_data.station_name = item.value("stationName", "");
|
||||||
@@ -783,7 +783,7 @@ bool parseJsonMessageUD(const std::string& json_str, const std::string& output_d
|
|||||||
m.logical_device_seq = monitor_item.value("lineNo", "");
|
m.logical_device_seq = monitor_item.value("lineNo", "");
|
||||||
m.terminal_connect = monitor_item.value("ptType", "");
|
m.terminal_connect = monitor_item.value("ptType", "");
|
||||||
m.timestamp = json_data.timestamp;
|
m.timestamp = json_data.timestamp;
|
||||||
m.terminal_code = json_data.terminal_code;
|
m.terminal_id = json_data.terminal_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1180,7 +1180,7 @@ std::string prepare_update(const std::string& code_str, const terminal_dev& json
|
|||||||
xmlStream << "<stationName>" << json_data.station_name << "</stationName>" << std::endl;
|
xmlStream << "<stationName>" << json_data.station_name << "</stationName>" << std::endl;
|
||||||
|
|
||||||
add_indent(xmlStream, indentLevel);
|
add_indent(xmlStream, indentLevel);
|
||||||
xmlStream << "<terminalCode>" << json_data.terminal_code << "</terminalCode>" << std::endl;
|
xmlStream << "<terminalCode>" << json_data.terminal_name << "</terminalCode>" << std::endl;
|
||||||
|
|
||||||
add_indent(xmlStream, indentLevel);
|
add_indent(xmlStream, indentLevel);
|
||||||
xmlStream << "<updateTime>" << json_data.timestamp << "</updateTime>" << std::endl; // Assuming `timestamp`
|
xmlStream << "<updateTime>" << json_data.timestamp << "</updateTime>" << std::endl; // Assuming `timestamp`
|
||||||
@@ -1201,6 +1201,9 @@ std::string prepare_update(const std::string& code_str, const terminal_dev& json
|
|||||||
add_indent(xmlStream, indentLevel);
|
add_indent(xmlStream, indentLevel);
|
||||||
xmlStream << "<devKey>" << json_data.dev_key << "</devKey>" << std::endl;
|
xmlStream << "<devKey>" << json_data.dev_key << "</devKey>" << std::endl;
|
||||||
|
|
||||||
|
add_indent(xmlStream, indentLevel);
|
||||||
|
xmlStream << "<mac>" << json_data.mac << "</mac>" << std::endl;
|
||||||
|
|
||||||
// monitorData 部分
|
// monitorData 部分
|
||||||
for (int i = 0; json_data.line[i].monitor_id[0] != '\0'; i++) {
|
for (int i = 0; json_data.line[i].monitor_id[0] != '\0'; i++) {
|
||||||
const ledger_monitor& monitor = json_data.line[i];
|
const ledger_monitor& monitor = json_data.line[i];
|
||||||
@@ -1228,9 +1231,21 @@ std::string prepare_update(const std::string& code_str, const terminal_dev& json
|
|||||||
xmlStream << "<timestamp>" << monitor.timestamp << "</timestamp>" << std::endl;
|
xmlStream << "<timestamp>" << monitor.timestamp << "</timestamp>" << std::endl;
|
||||||
|
|
||||||
add_indent(xmlStream, indentLevel);
|
add_indent(xmlStream, indentLevel);
|
||||||
xmlStream << "<terminal_code>" << monitor.terminal_code << "</terminal_code>" << std::endl;
|
xmlStream << "<terminal_id>" << monitor.terminal_id << "</terminal_id>" << std::endl;
|
||||||
|
|
||||||
add_indent(xmlStream, indentLevel);
|
add_indent(xmlStream, indentLevel);
|
||||||
|
xmlStream << "<CT1>" << monitor.CT1 << "</CT1>" << std::endl;
|
||||||
|
|
||||||
|
add_indent(xmlStream, indentLevel);
|
||||||
|
xmlStream << "<CT2>" << monitor.CT2 << "</CT2>" << std::endl;
|
||||||
|
|
||||||
|
add_indent(xmlStream, indentLevel);
|
||||||
|
xmlStream << "<PT1>" << monitor.PT1 << "</PT1>" << std::endl;
|
||||||
|
|
||||||
|
add_indent(xmlStream, indentLevel);
|
||||||
|
xmlStream << "<PT2>" << monitor.PT2 << "</PT2>" << std::endl;
|
||||||
|
|
||||||
|
add_indent(xmlStream, indentLevel);
|
||||||
xmlStream << "<status>" << monitor.status << "</status>" << std::endl;
|
xmlStream << "<status>" << monitor.status << "</status>" << std::endl;
|
||||||
|
|
||||||
indentLevel--;
|
indentLevel--;
|
||||||
|
|||||||
@@ -281,6 +281,7 @@ extern bool normalOutputEnabled;
|
|||||||
if (G_TEST_NUM != 0) {
|
if (G_TEST_NUM != 0) {
|
||||||
std::cout << "[PeriodicTask] Executing rocketmq_test_300()\n";
|
std::cout << "[PeriodicTask] Executing rocketmq_test_300()\n";
|
||||||
rocketmq_test_300(G_TEST_NUM, g_front_seg_index, G_TEST_TYPE,m_front);
|
rocketmq_test_300(G_TEST_NUM, g_front_seg_index, G_TEST_TYPE,m_front);
|
||||||
|
upload_data_test();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -412,7 +413,7 @@ void Worker::printLedgerinshell(const terminal_dev& dev, int fd) {
|
|||||||
std::ostringstream os;
|
std::ostringstream os;
|
||||||
os << "\r\x1B[K------------------------------------\n";
|
os << "\r\x1B[K------------------------------------\n";
|
||||||
os << "\r\x1B[K|-- terminal_id: " << dev.terminal_id << "\n";
|
os << "\r\x1B[K|-- terminal_id: " << dev.terminal_id << "\n";
|
||||||
os << "\r\x1B[K|-- terminal_code: " << dev.terminal_code << "\n";
|
os << "\r\x1B[K|-- terminal_name: " << dev.terminal_name << "\n";
|
||||||
os << "\r\x1B[K|-- dev_ip: " << dev.addr_str << "\n";
|
os << "\r\x1B[K|-- dev_ip: " << dev.addr_str << "\n";
|
||||||
os << "\r\x1B[K|-- dev_port: " << dev.port << "\n";
|
os << "\r\x1B[K|-- dev_port: " << dev.port << "\n";
|
||||||
os << "\r\x1B[K|-- dev_type: " << dev.dev_type << "\n";
|
os << "\r\x1B[K|-- dev_type: " << dev.dev_type << "\n";
|
||||||
@@ -427,6 +428,8 @@ void Worker::printLedgerinshell(const terminal_dev& dev, int fd) {
|
|||||||
os << "\r\x1B[K|-- tmnl_status: " << dev.tmnl_status << "\n";
|
os << "\r\x1B[K|-- tmnl_status: " << dev.tmnl_status << "\n";
|
||||||
os << "\r\x1B[K|-- timestamp: " << dev.timestamp << "\n";
|
os << "\r\x1B[K|-- timestamp: " << dev.timestamp << "\n";
|
||||||
|
|
||||||
|
os << "\r\x1B[K|-- mac: " << dev.mac << "\n";
|
||||||
|
|
||||||
for (size_t i = 0; i < dev.line.size(); ++i) {
|
for (size_t i = 0; i < dev.line.size(); ++i) {
|
||||||
const auto& ld = dev.line[i];
|
const auto& ld = dev.line[i];
|
||||||
if (ld.monitor_id.empty()) continue;
|
if (ld.monitor_id.empty()) continue;
|
||||||
@@ -434,11 +437,17 @@ void Worker::printLedgerinshell(const terminal_dev& dev, int fd) {
|
|||||||
os << "\r\x1B[K |-- monitor_id: " << ld.monitor_id << "\n";
|
os << "\r\x1B[K |-- monitor_id: " << ld.monitor_id << "\n";
|
||||||
os << "\r\x1B[K |-- monitor_name: " << ld.monitor_name << "\n";
|
os << "\r\x1B[K |-- monitor_name: " << ld.monitor_name << "\n";
|
||||||
os << "\r\x1B[K |-- logical_device_seq: " << ld.logical_device_seq << "\n";
|
os << "\r\x1B[K |-- logical_device_seq: " << ld.logical_device_seq << "\n";
|
||||||
os << "\r\x1B[K |-- terminal_code: " << ld.terminal_code << "\n";
|
os << "\r\x1B[K |-- terminal_id: " << ld.terminal_id << "\n";
|
||||||
os << "\r\x1B[K |-- voltage_level: " << ld.voltage_level << "\n";
|
os << "\r\x1B[K |-- voltage_level: " << ld.voltage_level << "\n";
|
||||||
os << "\r\x1B[K |-- terminal_connect: " << ld.terminal_connect << "\n";
|
os << "\r\x1B[K |-- terminal_connect: " << ld.terminal_connect << "\n";
|
||||||
os << "\r\x1B[K |-- status: " << ld.status << "\n";
|
os << "\r\x1B[K |-- status: " << ld.status << "\n";
|
||||||
os << "\r\x1B[K |-- timestamp: " << ld.timestamp << "\n";
|
os << "\r\x1B[K |-- timestamp: " << ld.timestamp << "\n";
|
||||||
|
|
||||||
|
os << "\r\x1B[K |-- CT1: " << ld.CT1 << "\n";
|
||||||
|
os << "\r\x1B[K |-- CT2: " << ld.CT2 << "\n";
|
||||||
|
os << "\r\x1B[K |-- PT1: " << ld.PT1 << "\n";
|
||||||
|
os << "\r\x1B[K |-- PT2: " << ld.PT2 << "\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
os << "\r\x1B[K------------------------------------\n";
|
os << "\r\x1B[K------------------------------------\n";
|
||||||
|
|||||||
Reference in New Issue
Block a user