diff --git a/json/create_json.cpp b/json/create_json.cpp index cfd44e5..1e0f863 100644 --- a/json/create_json.cpp +++ b/json/create_json.cpp @@ -145,7 +145,8 @@ public: QString WavePhasicA; QString WavePhasicB; QString WavePhasicC; - QString UnitOfTimeUnit; //暂态事件持续事件单位:0 - 毫秒 1 - 秒 + QString TypeOfData; //闪变和统计是否合并 0-分开 1-合并 + QString UnitOfTimeUnit; //暂态事件持续事件单位:0 - 毫秒 1 - 秒 lnk20260127 QString ValueOfTimeUnit; //上送值的时间:UTC-UTC时间 beijing-北京时间 QString WaveTimeFlag; //录波文件的时间:UTC-UTC时间 beijing-北京时间 QString IEDname; //例:PQMonitor @@ -244,6 +245,8 @@ bool get_xml_config_by_dev_type(const char* dev_type, XmlConfigC* out_cfg) { return false; } + memset(out_cfg, 0, sizeof(*out_cfg)); + QString dev_type_q = QString::fromUtf8(dev_type); QMap::iterator it = xmlinfo_list.find(dev_type_q); if (it == xmlinfo_list.end() || it.value() == nullptr) { @@ -259,6 +262,7 @@ bool get_xml_config_by_dev_type(const char* dev_type, XmlConfigC* out_cfg) { strncpy(out_cfg->WavePhasicB, cfg.WavePhasicB.toUtf8().constData(), sizeof(out_cfg->WavePhasicB) - 1); strncpy(out_cfg->WavePhasicC, cfg.WavePhasicC.toUtf8().constData(), sizeof(out_cfg->WavePhasicC) - 1); strncpy(out_cfg->UnitOfTimeUnit, cfg.UnitOfTimeUnit.toUtf8().constData(), sizeof(out_cfg->UnitOfTimeUnit) - 1); + strncpy(out_cfg->TypeOfData, cfg.TypeOfData.toUtf8().constData(), sizeof(out_cfg->TypeOfData) - 1); out_cfg->TypeOfData[sizeof(out_cfg->TypeOfData) - 1] = '\0';//lnk20260127 strncpy(out_cfg->ValueOfTimeUnit, cfg.ValueOfTimeUnit.toUtf8().constData(),sizeof(out_cfg->ValueOfTimeUnit) - 1); strncpy(out_cfg->WaveTimeFlag, cfg.WaveTimeFlag.toUtf8().constData(), sizeof(out_cfg->WaveTimeFlag) - 1); strncpy(out_cfg->IEDname, cfg.IEDname.toUtf8().constData(), sizeof(out_cfg->IEDname) - 1); @@ -898,6 +902,11 @@ bool ParseXMLConfig2(int xml_flag, XmlConfig *cfg, list *ctopiclist,QSt { cfg->UnitOfTimeUnit.append(e.attribute("Unit")); } + //lnk 20260127 + if ("TypeOfData" == strTag) + { + cfg->TypeOfData.append(e.attribute("Unit")); + } if ("ValueOfTime" == strTag) { cfg->ValueOfTimeUnit.append(e.attribute("Unit")); @@ -1063,6 +1072,40 @@ int transfer_json_block_data(char v_wiring_type[], json_block_data *data) //json } } + //lnk20260127 添加数据类型区分 + bool typeofdata = false; + + QString devType = data->dev_type; + QByteArray devTypeBytes = devType.toUtf8(); + const char* dev_type_cstr = devTypeBytes.constData(); + qDebug() << "[DBG] devType (QString) =" << devType; + qDebug() << "[DBG] devType length =" << devType.length(); + qDebug() << "[DBG] devTypeBytes =" << devTypeBytes; + qDebug() << "[DBG] devTypeBytes size =" << devTypeBytes.size(); + + printf("[DBG] dev_type_cstr = '%s'\n", dev_type_cstr); + XmlConfigC cfg1; + if (get_xml_config_by_dev_type(dev_type_cstr, &cfg1)) { + printf("========== XmlConfigC dump ==========\n"); + printf("WavePhasicFlag = '%s'\n", cfg1.WavePhasicFlag); + printf("WavePhasicA = '%s'\n", cfg1.WavePhasicA); + printf("WavePhasicB = '%s'\n", cfg1.WavePhasicB); + printf("WavePhasicC = '%s'\n", cfg1.WavePhasicC); + printf("UnitOfTimeUnit = '%s'\n", cfg1.UnitOfTimeUnit); + printf("TypeOfData = '%s'\n", cfg1.TypeOfData); + printf("ValueOfTimeUnit = '%s'\n", cfg1.ValueOfTimeUnit); + printf("WaveTimeFlag = '%s'\n", cfg1.WaveTimeFlag); + printf("IEDname = '%s'\n", cfg1.IEDname); + printf("LDevicePrefix = '%s'\n", cfg1.LDevicePrefix); + printf("=====================================\n"); + // 如果 TypeOfData == "1",则置 true + if (strcmp(cfg1.TypeOfData, "1") == 0) { + typeofdata = true; + } + } else { + printf("not find this dev_type\n"); + } + bool shortjumpflag = false; bool longjumpflag = false; @@ -1336,11 +1379,16 @@ int transfer_json_block_data(char v_wiring_type[], json_block_data *data) //json kafka_data_list_mutex.unlock(); //解锁 longjumpflag = true; } - if (longjumpflag == true || shortjumpflag == true) { - return 1; - } + + //lnk20260127 + if (typeofdata == false) {//不合并则处理完闪变就不处理其他数据 + if (longjumpflag == true || shortjumpflag == true) { + return 1; + } + } } //②-②历史闪变数据解析结束!-------------------------------- + //合并则继续处理其他数据 if (1 == pDataType->iDataType) //②-①历史稳态数据----------------------------------------------------------- { Ckafka_data_t KafkaData; //kafka发送数据结构类对象 diff --git a/mms/db_interface.h b/mms/db_interface.h index a43008e..5ee442d 100644 --- a/mms/db_interface.h +++ b/mms/db_interface.h @@ -160,6 +160,7 @@ typedef struct { char WavePhasicB[64]; char WavePhasicC[64]; char UnitOfTimeUnit[64]; + char TypeOfData[64]; char ValueOfTimeUnit[64]; char WaveTimeFlag[64]; char IEDname[64];