fix rtdata log error
This commit is contained in:
@@ -1246,6 +1246,9 @@ int transfer_json_qvvr_data(const std::string& dev_id, ushort monitor_id,
|
|||||||
get_terminal_name_by_terminal_id(dev_id, devname);
|
get_terminal_name_by_terminal_id(dev_id, devname);
|
||||||
get_monitor_name_by_monitor_id(mpid, mpname);
|
get_monitor_name_by_monitor_id(mpid, mpname);
|
||||||
|
|
||||||
|
const char* showName_d = devname.empty() ? dev_id.c_str() : devname.c_str();
|
||||||
|
const char* showName_m = devname.empty() ? mpid.c_str() : mpname.c_str();
|
||||||
|
|
||||||
root["monitorId"] = mpid;
|
root["monitorId"] = mpid;
|
||||||
root["devId"] = dev_id;
|
root["devId"] = dev_id;
|
||||||
root["CpuNo"] = monitor_id;
|
root["CpuNo"] = monitor_id;
|
||||||
@@ -1289,7 +1292,7 @@ int transfer_json_qvvr_data(const std::string& dev_id, ushort monitor_id,
|
|||||||
// 有效响应,略过
|
// 有效响应,略过
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
// 响应异常,保存 json
|
// 响应异常,保存 json
|
||||||
DIY_ERRORLOG_CODE(mpid.c_str(),2,LOG_CODE_TRANSIENT_COMM, "暂态接口响应异常,无法上送装置%s - 监测点%s的暂态事件",devname.c_str(), mpname.c_str());
|
DIY_ERRORLOG_CODE(mpid.c_str(),2,LOG_CODE_TRANSIENT_COMM, "暂态接口响应异常,无法上送装置%s - 监测点%s的暂态事件",showName_d, showName_m);
|
||||||
|
|
||||||
std::cout << "qvvr send fail ,store in local" << std::endl;
|
std::cout << "qvvr send fail ,store in local" << std::endl;
|
||||||
std::string qvvrDir = FRONT_PATH + "/dat/qvvr/";
|
std::string qvvrDir = FRONT_PATH + "/dat/qvvr/";
|
||||||
@@ -1299,7 +1302,7 @@ int transfer_json_qvvr_data(const std::string& dev_id, ushort monitor_id,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 无响应,保存 json
|
// 无响应,保存 json
|
||||||
DIY_ERRORLOG_CODE(mpid.c_str(),2,LOG_CODE_TRANSIENT_COMM,"暂态接口无响应,无法上送装置%s - 监测点%s的暂态事件",devname.c_str(), mpname.c_str());
|
DIY_ERRORLOG_CODE(mpid.c_str(),2,LOG_CODE_TRANSIENT_COMM,"暂态接口无响应,无法上送装置%s - 监测点%s的暂态事件",showName_d, showName_m);
|
||||||
|
|
||||||
std::cout << "qvvr send fail ,store in local" << std::endl;
|
std::cout << "qvvr send fail ,store in local" << std::endl;
|
||||||
std::string qvvrDir = FRONT_PATH + "/dat/qvvr/";
|
std::string qvvrDir = FRONT_PATH + "/dat/qvvr/";
|
||||||
@@ -1395,33 +1398,88 @@ bool get_monitor_id_by_dev_and_seq(const std::string& terminal_id,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据 monitor_id 查 monitor_name
|
//////////////////////////////////////////////////////////////////////////
|
||||||
bool get_monitor_name_by_monitor_id(const std::string& monitor_id,
|
|
||||||
std::string& out_monitor_name)
|
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> lk(ledgermtx);
|
|
||||||
|
|
||||||
for (const auto& dev : terminal_devlist) {
|
static std::string normalize_id(std::string s)
|
||||||
for (const auto& mon : dev.line) {
|
{
|
||||||
if (mon.monitor_id == monitor_id) {
|
// 去首尾空白和 CRLF
|
||||||
out_monitor_name = mon.monitor_name;
|
auto is_space = [](char c) {
|
||||||
return true;
|
return c == ' ' || c == '\t' || c == '\r' || c == '\n';
|
||||||
}
|
};
|
||||||
}
|
|
||||||
}
|
// trim left
|
||||||
return false;
|
size_t start = 0;
|
||||||
|
while (start < s.size() && is_space(s[start])) ++start;
|
||||||
|
|
||||||
|
// trim right
|
||||||
|
size_t end = s.size();
|
||||||
|
while (end > start && is_space(s[end - 1])) --end;
|
||||||
|
|
||||||
|
s = s.substr(start, end - start);
|
||||||
|
|
||||||
|
// 如有需要可统一大小写(terminal_id 一般是 hex)
|
||||||
|
// std::transform(s.begin(), s.end(), s.begin(), ::tolower);
|
||||||
|
|
||||||
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool get_terminal_name_by_terminal_id(const std::string& terminal_id,
|
bool get_terminal_name_by_terminal_id(const std::string& terminal_id,
|
||||||
std::string& out_terminal_name)
|
std::string& out_terminal_name)
|
||||||
{
|
{
|
||||||
|
std::string key = normalize_id(terminal_id);
|
||||||
|
|
||||||
std::lock_guard<std::mutex> lk(ledgermtx);
|
std::lock_guard<std::mutex> lk(ledgermtx);
|
||||||
|
|
||||||
for (const auto& dev : terminal_devlist) {
|
for (const auto& dev : terminal_devlist) {
|
||||||
if (dev.terminal_id == terminal_id) {
|
std::string dev_id = normalize_id(dev.terminal_id);
|
||||||
|
if (dev_id == key) {
|
||||||
out_terminal_name = dev.terminal_name;
|
out_terminal_name = dev.terminal_name;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ❌ 没找到,打印诊断日志(只在失败时)
|
||||||
|
std::ostringstream oss;
|
||||||
|
oss << "terminal_id not found: '" << terminal_id
|
||||||
|
<< "' (normalized='" << key << "'), existing ids: ";
|
||||||
|
|
||||||
|
int cnt = 0;
|
||||||
|
for (const auto& dev : terminal_devlist) {
|
||||||
|
if (cnt++ >= 5) { oss << "..."; break; } // 防止日志过长
|
||||||
|
oss << "'" << dev.terminal_id << "' ";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cerr << "[LEDGER] " << oss.str() << std::endl;
|
||||||
|
|
||||||
|
out_terminal_name.clear();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool get_monitor_name_by_monitor_id(const std::string& monitor_id,
|
||||||
|
std::string& out_monitor_name)
|
||||||
|
{
|
||||||
|
std::string key = normalize_id(monitor_id);
|
||||||
|
|
||||||
|
std::lock_guard<std::mutex> lk(ledgermtx);
|
||||||
|
|
||||||
|
for (const auto& dev : terminal_devlist) {
|
||||||
|
for (const auto& mon : dev.line) {
|
||||||
|
std::string mon_id = normalize_id(mon.monitor_id);
|
||||||
|
if (mon_id == key) {
|
||||||
|
out_monitor_name = mon.monitor_name;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ❌ 诊断输出
|
||||||
|
std::ostringstream oss;
|
||||||
|
oss << "monitor_id not found: '" << monitor_id
|
||||||
|
<< "' (normalized='" << key << "')";
|
||||||
|
|
||||||
|
std::cerr << "[LEDGER] " << oss.str() << std::endl;
|
||||||
|
|
||||||
|
out_monitor_name.clear();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1051,8 +1051,25 @@ rocketmq::ConsumeStatus myMessageCallbackrtdata(const rocketmq::MQMessageExt& ms
|
|||||||
return rocketmq::RECONSUME_LATER;
|
return rocketmq::RECONSUME_LATER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//20260109添加装置判断流程
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(ledgermtx);
|
||||||
|
const terminal_dev* targetDev = NULL;
|
||||||
|
for (std::vector<terminal_dev>::const_iterator it = terminal_devlist.begin(); it != terminal_devlist.end(); ++it) {
|
||||||
|
if (it->terminal_id == devid) { targetDev = &(*it); break; }
|
||||||
|
}
|
||||||
|
if (!targetDev) {
|
||||||
|
std::cout << "terminalId未匹配当前进程内装置: " << devid << std::endl;
|
||||||
|
return rocketmq::CONSUME_SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
get_terminal_name_by_terminal_id(devid, devname);
|
get_terminal_name_by_terminal_id(devid, devname);
|
||||||
|
|
||||||
|
const char* showName = devname.empty() ? devid.c_str() : devname.c_str();
|
||||||
|
|
||||||
|
std::cout << "[DBG] showName used in log = '" << showName << "'" << std::endl;
|
||||||
|
|
||||||
// 加锁访问台账
|
// 加锁访问台账
|
||||||
if( !devid.empty() && line > 0){
|
if( !devid.empty() && line > 0){
|
||||||
//不再使用文件触发方式,直接调用接口向终端发起请求
|
//不再使用文件触发方式,直接调用接口向终端发起请求
|
||||||
@@ -1063,7 +1080,7 @@ rocketmq::ConsumeStatus myMessageCallbackrtdata(const rocketmq::MQMessageExt& ms
|
|||||||
if (ClientManager::instance().get_dev_status(devid) != 1) {
|
if (ClientManager::instance().get_dev_status(devid) != 1) {
|
||||||
std::cout << "devid对应装置不在线: " << devid << std::endl;
|
std::cout << "devid对应装置不在线: " << devid << std::endl;
|
||||||
// 记录日志不响应 web 端
|
// 记录日志不响应 web 端
|
||||||
DIY_ERRORLOG_CODE("process",0,LOG_CODE_COMM,"主题:%s - tag:%s的实时数据触发消息失败,装置%s不在线", G_MQCONSUMER_TOPIC_RT.c_str(),FRONT_INST.c_str(),devname.c_str());
|
DIY_ERRORLOG_CODE("process",0,LOG_CODE_COMM,"主题:%s - tag:%s的实时数据触发消息失败,装置:%s 不在线", G_MQCONSUMER_TOPIC_RT.c_str(),FRONT_INST.c_str(),showName);
|
||||||
return rocketmq::CONSUME_SUCCESS;
|
return rocketmq::CONSUME_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user