完成数据追踪原始数据上送
This commit is contained in:
@@ -321,6 +321,10 @@ std::string Heart_Beat_Key = "";
|
|||||||
std::string Topic_Reply_Topic = "";
|
std::string Topic_Reply_Topic = "";
|
||||||
std::string Topic_Reply_Tag = "";
|
std::string Topic_Reply_Tag = "";
|
||||||
std::string Topic_Reply_Key = "";
|
std::string Topic_Reply_Key = "";
|
||||||
|
//数据追踪
|
||||||
|
std::string DATA_TRACE_TOPIC = "";
|
||||||
|
std::string DATA_TRACE_TAG = "";
|
||||||
|
std::string DATA_TRACE_KEY = "";
|
||||||
|
|
||||||
//lnk20260310添加文件管理的topic和tag
|
//lnk20260310添加文件管理的topic和tag
|
||||||
std::string G_MQCONSUMER_TOPIC_FILE = "";//consumer topie
|
std::string G_MQCONSUMER_TOPIC_FILE = "";//consumer topie
|
||||||
@@ -673,6 +677,13 @@ void init_config() {
|
|||||||
ba = settings.value("RocketMq/Topic_Reply_Key", "").toString().toLatin1();
|
ba = settings.value("RocketMq/Topic_Reply_Key", "").toString().toLatin1();
|
||||||
Topic_Reply_Key = strdup(ba.data());
|
Topic_Reply_Key = strdup(ba.data());
|
||||||
|
|
||||||
|
//数据追踪
|
||||||
|
ba = settings.value("RocketMq/TraceTopic", "").toString().toLatin1();
|
||||||
|
DATA_TRACE_TOPIC = strdup(ba.data());
|
||||||
|
ba = settings.value("RocketMq/TraceTag", "").toString().toLatin1();
|
||||||
|
DATA_TRACE_TAG = strdup(ba.data());
|
||||||
|
ba = settings.value("RocketMq/TraceKey", "").toString().toLatin1();
|
||||||
|
DATA_TRACE_KEY = strdup(ba.data());
|
||||||
|
|
||||||
//消费者
|
//消费者
|
||||||
ba = settings.value("RocketMq/consumer", "").toString().toLatin1();
|
ba = settings.value("RocketMq/consumer", "").toString().toLatin1();
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ extern std::string WEB_COMFLAG;
|
|||||||
extern std::string WEB_EVENT;
|
extern std::string WEB_EVENT;
|
||||||
extern std::string WEB_FILEDOWNLOAD;
|
extern std::string WEB_FILEDOWNLOAD;
|
||||||
extern std::string G_CONNECT_TOPIC;
|
extern std::string G_CONNECT_TOPIC;
|
||||||
|
extern std::string DATA_TRACE_TOPIC;//lnk20260609数据追踪topic
|
||||||
|
|
||||||
extern int RECALL_ONLY_FLAG;
|
extern int RECALL_ONLY_FLAG;
|
||||||
|
|
||||||
@@ -290,24 +291,36 @@ static void trace_hit_and_decrement(const QString& mp_id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//追踪61850原始数据
|
//追踪61850原始数据
|
||||||
static QString build_mms_multiline_text(const json_block_data* data)
|
static QString build_mms_json_object(const json_block_data* data)
|
||||||
{
|
{
|
||||||
QStringList lines;
|
QString json = "{";
|
||||||
|
|
||||||
QMapIterator<QString, double> it(data->mms_str_map);
|
QMapIterator<QString, double> it(data->mms_str_map);
|
||||||
|
bool first = true;
|
||||||
|
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
it.next();
|
it.next();
|
||||||
lines << QString("%1 = %2").arg(it.key()).arg(it.value(), 0, 'g', 15);
|
|
||||||
|
if (!first)
|
||||||
|
json += ",";
|
||||||
|
|
||||||
|
json += QString("\"%1\":%2")
|
||||||
|
.arg(escape_json_string(it.key()))
|
||||||
|
.arg(QString::number(it.value(), 'g', 15));
|
||||||
|
|
||||||
|
first = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return lines.join("\n");
|
json += "}";
|
||||||
|
|
||||||
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString build_trace_json(const json_block_data* data)
|
static QString build_trace_json(const json_block_data* data)
|
||||||
{
|
{
|
||||||
if (!data) return "{}";
|
if (!data) return "{}";
|
||||||
|
|
||||||
QString mms_text = build_mms_multiline_text(data);
|
QString mms_json = build_mms_json_object(data);
|
||||||
|
|
||||||
QString json;
|
QString json;
|
||||||
json += "{";
|
json += "{";
|
||||||
@@ -316,7 +329,7 @@ static QString build_trace_json(const json_block_data* data)
|
|||||||
json += QString("\"data_time\":%1,").arg(QString::number((qlonglong)data->time));
|
json += QString("\"data_time\":%1,").arg(QString::number((qlonglong)data->time));
|
||||||
json += QString("\"voltage_level\":\"%1\",").arg(QString::number(data->voltage_level, 'f', 6));
|
json += QString("\"voltage_level\":\"%1\",").arg(QString::number(data->voltage_level, 'f', 6));
|
||||||
json += QString("\"dev_type\":\"%1\",").arg(escape_json_string(data->dev_type));
|
json += QString("\"dev_type\":\"%1\",").arg(escape_json_string(data->dev_type));
|
||||||
json += QString("\"mms_text\":\"%1\"").arg(escape_json_string(mms_text));
|
json += QString("\"mms_json\":%1").arg(mms_json);
|
||||||
json += "}";
|
json += "}";
|
||||||
|
|
||||||
return json;
|
return json;
|
||||||
@@ -334,7 +347,7 @@ static void send_trace_if_needed(json_block_data* pdata)
|
|||||||
Ckafka_data_t KafkaData;
|
Ckafka_data_t KafkaData;
|
||||||
KafkaData.monitor_id = pdata->monitorId;
|
KafkaData.monitor_id = pdata->monitorId;
|
||||||
KafkaData.mp_id = pdata->mp_id;
|
KafkaData.mp_id = pdata->mp_id;
|
||||||
KafkaData.strTopic = "DATA_TRACE_TOPIC";
|
KafkaData.strTopic = QString::fromStdString(DATA_TRACE_TOPIC);
|
||||||
KafkaData.strText = jsonText;
|
KafkaData.strText = jsonText;
|
||||||
|
|
||||||
kafka_data_list_mutex.lock();
|
kafka_data_list_mutex.lock();
|
||||||
@@ -1204,6 +1217,9 @@ int transfer_json_block_data(char v_wiring_type[], json_block_data *data) //json
|
|||||||
print_mms_str_map(data);
|
print_mms_str_map(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//数据追踪上送
|
||||||
|
send_trace_if_needed(data);
|
||||||
|
|
||||||
list<CTopic*> ctopic_list;
|
list<CTopic*> ctopic_list;
|
||||||
|
|
||||||
////lnk2024-8-15 区分星型,角型接线
|
////lnk2024-8-15 区分星型,角型接线
|
||||||
|
|||||||
@@ -2149,6 +2149,8 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
|
|||||||
printf(">>>>>>>> extract_timestamp_from_cfg_file success \n");
|
printf(">>>>>>>> extract_timestamp_from_cfg_file success \n");
|
||||||
qvvr = find_qvvr_by_trig_tm(LD_info,trig_tm); //根据文件的触发时间查找检测点记录的匹配上的暂态事件
|
qvvr = find_qvvr_by_trig_tm(LD_info,trig_tm); //根据文件的触发时间查找检测点记录的匹配上的暂态事件
|
||||||
if (qvvr) {
|
if (qvvr) {
|
||||||
|
DIY_INFOLOG_CODE(LD_info->mp_id,2,LOG_CODE_COMTRADE_FILE,"【NORMAL】监测点:%s - id:%s波形文件匹配暂态事件成功", LD_info->name,LD_info->mp_id);
|
||||||
|
|
||||||
char* uuid_cfg = (char*)malloc(65 * sizeof(char));//上传文件后获取到的路径
|
char* uuid_cfg = (char*)malloc(65 * sizeof(char));//上传文件后获取到的路径
|
||||||
char* uuid_dat = (char*)malloc(65 * sizeof(char));
|
char* uuid_dat = (char*)malloc(65 * sizeof(char));
|
||||||
char* filename_cfg = (char*)malloc(100 * sizeof(char));//上传文件后获取到的文件名
|
char* filename_cfg = (char*)malloc(100 * sizeof(char));//上传文件后获取到的文件名
|
||||||
@@ -2374,6 +2376,9 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
DIY_INFOLOG_CODE(LD_info->mp_id,2,LOG_CODE_COMTRADE_FILE,"【INFO】监测点:%s - id:%s的录波文件没有任何暂态事件可以匹配,录波号段:%d", LD_info->name,LD_info->mp_id,LD_info->FltNum[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user