From d3579a2aa7665bc8942521195ee8b5982c67a0f5 Mon Sep 17 00:00:00 2001 From: lnk Date: Tue, 9 Jun 2026 16:13:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=95=B0=E6=8D=AE=E8=BF=BD?= =?UTF-8?q?=E8=B8=AA=E5=8E=9F=E5=A7=8B=E6=95=B0=E6=8D=AE=E4=B8=8A=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cfg_parse/cfg_parser.cpp | 11 +++++++++++ json/create_json.cpp | 30 +++++++++++++++++++++++------- mms/mms_process.c | 5 +++++ 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/cfg_parse/cfg_parser.cpp b/cfg_parse/cfg_parser.cpp index fae7392..1de0d45 100644 --- a/cfg_parse/cfg_parser.cpp +++ b/cfg_parse/cfg_parser.cpp @@ -321,6 +321,10 @@ std::string Heart_Beat_Key = ""; std::string Topic_Reply_Topic = ""; std::string Topic_Reply_Tag = ""; std::string Topic_Reply_Key = ""; +//数据追踪 +std::string DATA_TRACE_TOPIC = ""; +std::string DATA_TRACE_TAG = ""; +std::string DATA_TRACE_KEY = ""; //lnk20260310添加文件管理的topic和tag std::string G_MQCONSUMER_TOPIC_FILE = "";//consumer topie @@ -673,6 +677,13 @@ void init_config() { ba = settings.value("RocketMq/Topic_Reply_Key", "").toString().toLatin1(); 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(); diff --git a/json/create_json.cpp b/json/create_json.cpp index ee53e38..ff2c130 100644 --- a/json/create_json.cpp +++ b/json/create_json.cpp @@ -44,6 +44,7 @@ extern std::string WEB_COMFLAG; extern std::string WEB_EVENT; extern std::string WEB_FILEDOWNLOAD; extern std::string G_CONNECT_TOPIC; +extern std::string DATA_TRACE_TOPIC;//lnk20260609数据追踪topic extern int RECALL_ONLY_FLAG; @@ -290,24 +291,36 @@ static void trace_hit_and_decrement(const QString& mp_id) } //追踪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 it(data->mms_str_map); + bool first = true; + while (it.hasNext()) { 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) { if (!data) return "{}"; - QString mms_text = build_mms_multiline_text(data); + QString mms_json = build_mms_json_object(data); QString 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("\"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("\"mms_text\":\"%1\"").arg(escape_json_string(mms_text)); + json += QString("\"mms_json\":%1").arg(mms_json); json += "}"; return json; @@ -334,7 +347,7 @@ static void send_trace_if_needed(json_block_data* pdata) Ckafka_data_t KafkaData; KafkaData.monitor_id = pdata->monitorId; KafkaData.mp_id = pdata->mp_id; - KafkaData.strTopic = "DATA_TRACE_TOPIC"; + KafkaData.strTopic = QString::fromStdString(DATA_TRACE_TOPIC); KafkaData.strText = jsonText; 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); } + //数据追踪上送 + send_trace_if_needed(data); + list ctopic_list; ////lnk2024-8-15 区分星型,角型接线 diff --git a/mms/mms_process.c b/mms/mms_process.c index 2f25976..c9e6060 100644 --- a/mms/mms_process.c +++ b/mms/mms_process.c @@ -2149,6 +2149,8 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info ) printf(">>>>>>>> extract_timestamp_from_cfg_file success \n"); qvvr = find_qvvr_by_trig_tm(LD_info,trig_tm); //根据文件的触发时间查找检测点记录的匹配上的暂态事件 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_dat = (char*)malloc(65 * 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]); + } } }