Files
microser/json/create_json.cpp

3197 lines
133 KiB
C++
Raw Normal View History

2025-01-16 16:17:01 +08:00
#include <QtCore/QCoreApplication>
#include <iostream>
#include <fstream>
#include <qdebug.h>
#include <QFile>
#include <QtXml/QDomDocument>
#include <QtXml/QDomElement>
#include <QtXml/QDomNode>
#include <QtXml/QDomNodeList>
#include <QtCore/qglobal.h>
#include <list> //C++ STL<54><4C>list
#include <map> //C++ STL<54><4C>map
#include <QStringList>
#include <QDateTime>//zw<7A>޸<EFBFBD> 2023-08-22 <20><EFBFBD><E6B4A2><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#include <QMap>//zw<7A>޸<EFBFBD> 2023-08-22 <20><EFBFBD><E6B4A2><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#include "mms_json_inter.h" //jsonͷ<6E>ļ<EFBFBD>
#include "../mms/db_interface.h" //jsonͷ<6E>ļ<EFBFBD>
2025-01-17 17:10:18 +08:00
#include "../mms/rdb_client.h" //̨<>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýӿ<C3BD>
2025-01-16 16:17:01 +08:00
//lnk20241031<33><31><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
#include "../json/cjson.h"
///////////////////////////////////////////////////lnk2024-10-21////////////////////////////////////////////////////////
extern void SendJsonAPI_web(const std::string& strUrl, const char* code, const std::string& json, char** ptr);
extern std::string WEB_INTEGRITY;
extern std::string WEB_COMFLAG;
extern std::string WEB_EVENT;
extern std::string WEB_FILEDOWNLOAD;
2025-03-11 21:07:17 +08:00
extern std::string G_CONNECT_TOPIC;
2025-01-16 16:17:01 +08:00
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
using namespace std;
extern std::string intToString(int number);
QString JSON_CONFIG_FN = QString("JiangSu_Config.xml");
#define APR_SUCCESS 1
#define APR_EBADPATH 0
#define APR_EBADF 0
const string PhsSTR = "ABCT";
extern int FILE_FLAG;
2025-02-14 16:44:38 +08:00
//lnk20250214
extern int isdelta_flag;
2025-01-16 16:17:01 +08:00
//<2F><><EFBFBD><EFBFBD>Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0B6A8>-------------------------------------------------------------/*
class CEventData //SOE<4F>¼<EFBFBD><C2BC><EFBFBD>
{
public:
int nDataType; //<2F>澯SOE<4F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
QString type; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>type<70><65><EFBFBD>ͣ<EFBFBD>0-DataType 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D>޳<EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD> 3-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD> 4-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5-<2D><>λ 6-ֵ<><D6B5><EFBFBD><EFBFBD> 9-ʵʱSOE<4F>¼<EFBFBD>
QString triggerFlag; //<2F>澯SOE<4F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int nIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>·LineInfoֵ<6F><D6B5><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>
QString DO; //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
QString DA; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strFullName; //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
class CDataValue //<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
{
public:
QString strName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float fValue; //<2F><><EFBFBD><EFBFBD>ֵ
bool bIsValue; //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ֵ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>ʶ
int nIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>·LineInfoֵ<6F><D6B5><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>
QString type; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>type<70><65><EFBFBD>ͣ<EFBFBD>0-DataType 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D>޳<EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD> 3-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD> 4-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5-<2D><>λ 6-ֵ<><D6B5><EFBFBD><EFBFBD> 9-ʵʱSOE<4F>¼<EFBFBD>
QString DO; //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
QString DA; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strFullName; //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strCoefficient; //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
float fCoefficient; //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
QString strOffset; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
int iOffset; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>) = <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> - װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
bool bIsAngle; //<2F>Ƕȱ<C7B6>־ WW 2018-06-28
bool bPlt; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>true-<2D><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> false-<2D><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
QString BaseFlag; //zw<7A>޸<EFBFBD> 2023 - 8 - 14 Ϊ<><CEAA>ʷ<EFBFBD><CAB7><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD> Value<75>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-BaseFlag LimitUp LimitDown
QString LimitUp; //zw<7A>޸<EFBFBD> 2023 - 8 - 14 Ϊ<><CEAA>ʷ<EFBFBD><CAB7><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD> Value<75>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-BaseFlag LimitUp LimitDown
QString LimitDown; //zw<7A>޸<EFBFBD> 2023 - 8 - 14 Ϊ<><CEAA>ʷ<EFBFBD><CAB7><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD> Value<75>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-BaseFlag LimitUp LimitDown
CDataValue()
{
fCoefficient = 1.0f; //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
iOffset = 0; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)
bIsAngle = false; //<2F>ǽǶȱ<C7B6>־
bPlt = false; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
}
};
class CSequence //<2F><><EFBFBD><EFBFBD>(A<><41>B<EFBFBD><42>C<EFBFBD><43>T)<29><>
{
public:
QString strSValue; //<2F><><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>7<EFBFBD><37>ABC<42><43><EFBFBD>8<EEA3AC><38>T<EFBFBD><54>
QString strSeq; //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>A<EFBFBD><41>B<EFBFBD><42>C<EFBFBD><43>T
QString type; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>type<70><65><EFBFBD>ͣ<EFBFBD>0-DataType 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D>޳<EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD> 3-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD> 4-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5-<2D><>λ 6-ֵ<><D6B5><EFBFBD><EFBFBD> 9-ʵʱSOE<4F>¼<EFBFBD>
list<CDataValue*> DataValueList; //<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
};
class CItem //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
public:
QString strItemName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strItemValue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
QString type; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>type<70><65><EFBFBD>ͣ<EFBFBD>0-DataType 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D>޳<EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD> 3-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD> 4-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5-<2D><>λ 6-ֵ<><D6B5><EFBFBD><EFBFBD> 9-ʵʱSOE<4F>¼<EFBFBD>
list<CSequence*> SequenceList; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
class CMonitor //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
public:
QString strMonitor; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString type; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>type<70><65><EFBFBD>ͣ<EFBFBD>0-DataType 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D>޳<EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD> 3-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD> 4-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5-<2D><>λ 6-ֵ<><D6B5><EFBFBD><EFBFBD> 9-ʵʱSOE<4F>¼<EFBFBD>
list<CItem*> ItemList; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
class CDataType //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
public:
int iDataType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>1-<2D><>̬ 2-<2D><><EFBFBD><EFBFBD> 3-<2D><>̬
QString type; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>type<70><65><EFBFBD>ͣ<EFBFBD>0-DataType 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D>޳<EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD> 3-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD> 4-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5-<2D><>λ 6-ֵ<><D6B5><EFBFBD><EFBFBD> 9-ʵʱSOE<4F>¼<EFBFBD>
int BaseFlag1; //zw<7A>޸<EFBFBD> 2023-8-25 <20><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܸ<EFBFBD><DCB8><EFBFBD>
int BaseFlag0; //zw<7A>޸<EFBFBD> 2023-8-25 <20><>¼<EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
list<CMonitor*> MonitorList; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CEventData*> SOEList; //SOE<4F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
};
class CTopic //Kafka Producer<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
public:
QString strTopic; //Kafka Producer<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
list<CDataType*> DataTypeList; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
class XmlConfig //zw<7A>޸<EFBFBD> 2023 - 8 - 14 <20><><EFBFBD><EFBFBD>xml<6D><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
public:
QString WavePhasicFlag; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> 0-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Flag=0 A<><41>B<EFBFBD><42>C<EFBFBD><43><EFBFBD>ó<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Flag=1<><31>A<EFBFBD><41>B<EFBFBD><42>C<EFBFBD><43><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString WavePhasicA;
QString WavePhasicB;
QString WavePhasicC;
QString UnitOfTimeUnit; //<2F><>̬<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>λ<EFBFBD><CEBB>0 - <20><><EFBFBD><EFBFBD> 1 - <20><>
QString ValueOfTimeUnit; //<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ʱ<EFBFBD>䣺UTC-UTCʱ<43><CAB1> beijing-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
QString WaveTimeFlag; //¼<><C2BC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ʱ<EFBFBD>䣺UTC-UTCʱ<43><CAB1> beijing-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
QString IEDname; //<2F><><EFBFBD><EFBFBD>PQMonitor
QString LDevicePrefix; //<2F><><EFBFBD><EFBFBD>PQM
list<CEventData*> SOEList; //SOE<4F><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
};
class XmlDataBase //zw<7A>޸<EFBFBD> 2023-8-30 <20><><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>ģ<EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
public:
QString MODEL_ID;//ģ<>ͱ<EFBFBD><CDB1><EFBFBD> guid
QString TMNL_TYPE;//<2F>ն<EFBFBD><D5B6>ͺ<EFBFBD>
QString TMNL_FACTORY;//<2F>ն˳<D5B6><CBB3><EFBFBD>
QString FILE_PATH;//Զ<><D4B6>ģ<EFBFBD><C4A3><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7> lnk2024-10-28
QString FILE_NAME;//oss<73>ļ<EFBFBD><C4BC>洢·<E6B4A2><C2B7>
QDateTime datetime;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> ʱ<><CAB1><EFBFBD><EFBFBD>
};
class MP_RATIONALITY //zw<7A>޸<EFBFBD> 2023 - 8 - 22 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>¼<EFBFBD><C2BC>
{
public:
double fValue;//zw<7A>޸<EFBFBD> 2023-08-22 <20><>һ<EFBFBD>μ<EFBFBD>¼<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
QDateTime dtvalue;//zw<7A>޸<EFBFBD> 2023-08-22 <20><>һ<EFBFBD>μ<EFBFBD>¼<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
int over_time;//zw<7A>޸<EFBFBD> 2023-08-22 <20>ü<EFBFBD>¼<EFBFBD><C2BC><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>
};
class Mn_Timespan //zw<7A>޸<EFBFBD> 2023-08-29 ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
public:
QList<long long> timespan;//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int msspan;
Mn_Timespan()
{
msspan = 0;
}
};
class Xmldata //zw<7A>޸<EFBFBD> 2023-08-30
{
public:
XmlDataBase xmlbase;//xml<6D><6C><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>
XmlConfig xmlcfg;//<2F>‰<EFBFBD><C289><EFBFBD>xml<6D>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CTopic*> topicList; //Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool updataflag = true;
};
//-------------------------------------------------------------------------------------*/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
2025-02-14 16:44:38 +08:00
2025-04-29 15:05:36 +08:00
extern int FILE_FLAG;
QMutex kafka_data_list_mutex; //Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QList<Ckafka_data_t> kafka_data_list; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QMutex oss_data_list_mutex; //oss<73><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> zw<7A><77><EFBFBD><EFBFBD>
QList<oss_data_t> oss_data_list; //oss<73><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> zw<7A><77><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------------*/
QMap<QString,Mn_Timespan*> data_timespan_list;//zw<7A>޸<EFBFBD> 2023 - 8 - 29 <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-04-30 10:22:57 +08:00
QMap<QString, Xmldata*> xmlinfo_list;//zw<7A>޸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺŶ<CDBA>Ӧ<EFBFBD><D3A6>xml<6D><6C><EFBFBD><EFBFBD>-<2D><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ľڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-04-29 15:05:36 +08:00
XmlConfig xmlcfg;//zw<7A>޸<EFBFBD> 2023 - 8 - 14 <20>‰<EFBFBD>xml<6D>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CTopic *> topicList; //Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-04-30 10:22:57 +08:00
2025-04-29 15:05:36 +08:00
int inited = false; //JiangSu_Config.xml<6D>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʶ
XmlConfig xmlcfg2;//lnk2024 - 8 - 13 <20>‰<EFBFBD><C289><EFBFBD><EFBFBD><EFBFBD>xml<6D>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CTopic*> topicList2; //lnk2024-8-14<31><34><EFBFBD><EFBFBD>Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QMap<QString, Xmldata*> xmlinfo_list2;//lnk2024-8-14 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺŶ<CDBA>Ӧ<EFBFBD><D3A6>xml<6D><6C><EFBFBD><EFBFBD>-<2D><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ľڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-04-30 10:22:57 +08:00
2025-04-29 15:05:36 +08:00
extern int isdelta_flag;//lnk2024-8-16 <20><><EFBFBD>ͽ<EFBFBD><CDBD>߱<EFBFBD>־
///////////////////////////////////////////////lnk20241021<32>滻web<65>ӿ<EFBFBD>//////////////////////////////////
void connectlog_pgsql(char* id,char* datetime,int status);
///////////////////////////////////////////////lnk20241021<32>滻web<65>ӿ<EFBFBD>//////////////////////////////////
2025-01-16 16:17:01 +08:00
2025-02-14 16:44:38 +08:00
//lnk2024-8-16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
bool ParseXMLConfig2(int xml_flag, XmlConfig *cfg, list<CTopic*> *ctopiclist,QString path) //<2F><><EFBFBD><EFBFBD>JiangSu_Config.xml<6D><6C><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
2025-01-16 16:17:01 +08:00
{
//ע<><D7A2><EFBFBD><EFBFBD>#7#<23><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>8421<32>룬8-CP95 4-<2D><>Сֵ 2-<2D><><EFBFBD><EFBFBD>ֵ 1-ƽ<><C6BD>ֵ
// <20><>%2,50%<25><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>÷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EBA3AC>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ʾг<CABE><D0B3><EFBFBD><EFBFBD>ʼ<EFBFBD>ţ<EFBFBD><C5A3>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>SEQ=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>8421<32><31> 8-T 4-C 2-B 1-A
//ע<><D7A2>type<70><65><EFBFBD>ͣ<EFBFBD>0-DataType 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D>޳<EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD> 3-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD> 4-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5-<2D><>λ 6-ֵ<><D6B5><EFBFBD><EFBFBD> 9-ʵʱSOE<4F>¼<EFBFBD> 11-ʵʱSOE<4F>¼<EFBFBD>
QString strPhasic[4] = { "A", "B", "C", "T" }; //<2F><><EFBFBD><EFBFBD>ö<EFBFBD><C3B6> <20><><EFBFBD><EFBFBD>(A-T)
2025-02-14 16:44:38 +08:00
QString strLine[4] = { "AB", "BC", "CA", "T" }; //lnk2024-8-14<31><34><EFBFBD><EFBFBD>ö<EFBFBD><C3B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(AB-T)
2025-01-16 16:17:01 +08:00
int nStart = 1, nEnd = 1; //г<><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
QString strValueTemp; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20><><EFBFBD><EFBFBD>%0,49% <20><> %2,50%
//<2F><><EFBFBD><EFBFBD>JiangSu_Config.xml<6D><6C><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
//QString xml_dir = QString("D:/")+QString("PQD-9k/config/"); //<2F><><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ȡxmlʧ<6C>ܣ<EFBFBD><DCA3>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>þ<EFBFBD><C3BE><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD> zl 2018-11-14 15:43:34
QDomDocument doc; //<2F>½<EFBFBD>QDomDocument<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>XML<4D>ĵ<EFBFBD>
if ("not define" == path) {
QString xml_dir = QString("../") + QString("etc/"); //Linux<75>µ<EFBFBD><C2B5><EFBFBD>·<EFBFBD><C2B7>
QFile file(xml_dir + JSON_CONFIG_FN);
if (!file.open(QIODevice::ReadOnly | QFile::Text)) //<2F><>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>xml
{
return 0;
}
if (!doc.setContent(&file)) //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>doc<6F><63>
{
file.close();
return 0;
}
file.close();
cout << "not define xml" << endl;
}
else {
QString tmppath;
tmppath.append("/FeProject/dat/").append(path).append(".xml");
QFile file(tmppath);
if (!file.open(QIODevice::ReadOnly | QFile::Text)) //<2F><>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>xml
{
return 0;
}
if (!doc.setContent(&file)) //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>doc<6F><63>
{
file.close();
return 0;
}
file.close();
cout << "define xml" << endl;
}
//<2F><>xml<6D>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>doc<6F><63>
QDomNode firstNode = doc.firstChild(); //<2F><><EFBFBD>ڵ<EFBFBD>"JSConfigTemplate"
QDomElement docElem = doc.documentElement(); //<2F><><EFBFBD>ظ<EFBFBD><D8B8>ڵ<EFBFBD>Ԫ<EFBFBD><D4AA>
QDomNode n = docElem.firstChild(); //<2F><><EFBFBD><EFBFBD>doc<6F>ĵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ㣬<DAB5><E3A3AC>"Topic"
while (!n.isNull()) //<2F><><EFBFBD><EFBFBD>Topic<69>ڵ㲻Ϊ<E3B2BB><CEAA>
{
if (n.isElement())
{
QDomElement e = n.toElement(); //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪԪ<CEAA><D4AA>
QString strTag = e.tagName(); //Topic<69>ڵ<EFBFBD>
if ("Topic" == strTag)//zw<7A>޸<EFBFBD> 2023 - 8 - 14 <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><>topic<69>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
CTopic* topic = new CTopic(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
topic->strTopic = e.attribute("name"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ctopiclist->push_back(topic); //<2F><><EFBFBD><EFBFBD> Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//zw<7A>޸<EFBFBD> 2023 - 8 - 14 Ϊ<><CEAA>ʷ<EFBFBD><CAB7><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD> Value<75>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-BaseFlag LimitUp LimitDown
if ("Topic" == strTag && ("HISDATA" == topic->strTopic || "RTDATA" == topic->strTopic)) //<2F>ٶ<EFBFBD>ȡTopic<69><63>HISDATA<54><41>RTDATA<54><41><EFBFBD><EFBFBD>---------------------------------------------------
{
QDomNodeList list = e.childNodes(); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>Topic<69><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>б<EFBFBD>
for (int i = 0; i < list.count(); i++) //<2F><><EFBFBD><EFBFBD> DataType<70>б<EFBFBD>
{
QDomNode node = list.at(i); //node1 <DataType>
if (node.isElement())
{
CDataType* dt = new CDataType(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
dt->iDataType = node.toElement().attribute("value").toInt(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ(1-ʵʱ/<2F><>ʷ<EFBFBD><CAB7>̬<EFBFBD><CCAC>2-ʵʱ/<2F><>ʷ<EFBFBD><CAB7><EFBFBD>䡢3-ʵʱ/<2F><>ʷ<EFBFBD><CAB7>̬<EFBFBD><CCAC>4-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><CCAC>5-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䡢6-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬)
dt->type = node.toElement().attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
dt->BaseFlag0 = 0;
dt->BaseFlag1 = 0;
topic->DataTypeList.push_back(dt); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strTag2 = node.toElement().tagName(); //DataType<70>ڵ<EFBFBD>
if ("DataType" == strTag2) //<2F>ڶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DataType
{
QDomNodeList list2 = node.childNodes(); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>DataType<70><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>б<EFBFBD>
for (int i2 = 0; i2 < list2.count(); i2++) //<2F><><EFBFBD><EFBFBD> Monitor<6F>б<EFBFBD>
{
QDomNode node2 = list2.at(i2); //node2 <Monitor>
if (node2.isElement())
{
CMonitor* mt = new CMonitor(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
mt->strMonitor = node2.toElement().attribute("name"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ע<><D7A2><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ҫ<EFBFBD><D2AA>Rpt<70><74><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mt->type = node2.toElement().attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
dt->MonitorList.push_back(mt); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strTag3 = node2.toElement().tagName(); //Monitor<6F>ڵ<EFBFBD>
if ("Monitor" == strTag3) //<2F>۶<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Monitor
{
QDomNodeList list3 = node2.childNodes(); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>Monitor<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>б<EFBFBD>
for (int i3 = 0; i3 < list3.count(); i3++) //<2F><><EFBFBD><EFBFBD> Item<65>б<EFBFBD>
{
QDomNode node3 = list3.at(i3); //node3 <Item>
if (node3.isElement())
{
CItem* it = new CItem(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
it->strItemName = node3.toElement().attribute("name"); //FLAG<41><47>TIME<4D><45>V<EFBFBD><56>I<EFBFBD><49>PQ
it->type = node3.toElement().attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if ("FLAG" == it->strItemName) //<2F>޳<EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD>(1<><31><EFBFBD><EFBFBD><EFBFBD>޳<EFBFBD><DEB3><EFBFBD>0<EFBFBD><30><EFBFBD>޳<EFBFBD><DEB3><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>޳<EFBFBD>)
it->strItemValue = node3.toElement().attribute("value"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
mt->ItemList.push_back(it); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strTag4 = node3.toElement().tagName(); //Item<65>ڵ<EFBFBD>
if ("Item" == strTag4) //<2F>ܶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Item
{
QDomNodeList list4 = node3.childNodes(); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>Item<65><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>б<EFBFBD>
for (int i4 = 0; i4 < list4.count(); i4++) //<2F><><EFBFBD><EFBFBD> Sequence<63>б<EFBFBD>
{
QDomNode node4 = list4.at(i4); //node4 <Sequence>
if (node4.isElement())
{
QString strPhase = node4.toElement().attribute("value"); //<2F><><EFBFBD><EFBFBD>
2025-02-14 16:44:38 +08:00
if ((!xml_flag || "V" != it->strItemName) && "7" == strPhase) //<2F><>-<2D>ٶ<EFBFBD>ȡABC<42><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //lnk2024-8-14 <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
2025-01-16 16:17:01 +08:00
{
for (int n = 0; n < 3; n++) //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(ABC<42><43><EFBFBD><EFBFBD>)
{
CSequence* sq = new CSequence(); //ABC<42><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
sq->strSValue = node4.toElement().attribute("value"); //<2F><><EFBFBD><EFBFBD>ֵ(7<><37>ABC<42><43><EFBFBD>ࡢ8<E0A1A2><38>T<EFBFBD><54>)
sq->type = node4.toElement().attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
sq->strSeq = strPhasic[n]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>A<EFBFBD><41>B<EFBFBD><42>C
it->SequenceList.push_back(sq); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strTag5 = node4.toElement().tagName(); //Sequence<63>ڵ<EFBFBD>
if ("Sequence" == strTag5) //<2F>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Sequence
{
QDomNodeList list5 = node4.childNodes(); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>Sequence<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>б<EFBFBD>
for (int i5 = 0; i5 < list5.count(); i5++) //<2F><><EFBFBD><EFBFBD> ABC<42><43><EFBFBD><EFBFBD>Value<75>б<EFBFBD>
{
QDomNode node5 = list5.at(i5); //node5 <Value>
if (node5.isElement())
{
QDomElement e_Value = node5.toElement(); //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪԪ<CEAA><D4AA>
QString strTag6 = e_Value.tagName(); //<2F><><EFBFBD><EFBFBD>Sequence<63><65> <20><><EFBFBD><EFBFBD>DataValue<75>ӽڵ<D3BD>
if ("Value" == strTag6) //<2F>޶<EFBFBD>ȡABC<42><43><EFBFBD><EFBFBD>Value
{
QString strDVName = e_Value.attribute("name"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strDAName = e_Value.attribute("DA"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-02-21 16:24:41 +08:00
if (strDAName.indexOf("l_phs*") >= 0){ //DA<44><41><EFBFBD><EFBFBD>"l_phs*"//lnk20250221<32><31><EFBFBD>ν<EFBFBD><CEBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD>PPV
strDAName = strDAName.replace("l_phs", "phs");
strDAName = strDAName.replace("*", strLine[n]);
2025-04-29 15:05:36 +08:00
2025-02-21 16:24:41 +08:00
} //<2F><>DA<44><41><EFBFBD><EFBFBD>*<2A>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(AB<41><42>BC<42><43>CA) <20><><EFBFBD><EFBFBD>phsAB$cVal$mag$f
else if (strDAName.indexOf("phs*") >= 0) {//DA<44><41><EFBFBD><EFBFBD>"phs*"
strDAName = strDAName.replace("*", sq->strSeq);} //<2F><>DA<44><41><EFBFBD><EFBFBD>*<2A>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(A<><41>B<EFBFBD><42>C) <20><><EFBFBD><EFBFBD>phsA$cVal$mag$f
//<2F><>-<2D><>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ(ABC<42><43><EFBFBD><EFBFBD>)-------------------------------------
2025-01-16 16:17:01 +08:00
if (strDVName.indexOf("%") >= 0 && strDAName.indexOf("%-") >= 0) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>% <20><> DA<44><41><EFBFBD><EFBFBD>%- <20><><EFBFBD><EFBFBD>V_%0,49%_MAX
{
QStringList strHarm1 = strDVName.split('%');
if (strHarm1.count() >= 2) //<2F><><EFBFBD><EFBFBD>V_ | 0,49 | _MAX
{
strValueTemp = "%" + strHarm1.at(1) + "%"; //<2F><><EFBFBD><EFBFBD>%0,49%
QStringList strHarm2 = strHarm1.at(1).split(','); //<2F><><EFBFBD><EFBFBD>0,49
if (strHarm2.count() >= 2)
{
nStart = (strHarm2.at(0)).toInt(); //г<><D0B3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>0
nEnd = (strHarm2.at(1)).toInt(); //г<><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>49
}
}
QString substring = strDAName.mid(strDAName.indexOf("[") + 1, strDAName.indexOf("]") - strDAName.indexOf("[") - 1);
QStringList strDAList1 = substring.split('-');
int strDAoffset = (strDAList1.at(1)).toInt();
for (int i = nStart; i <= nEnd; i++) //<2F><><EFBFBD><EFBFBD> ABC<42><43><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
QString strDVNameTemp = strDVName; //<2F><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strDANameTemp = strDAName; //<2F><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataValue* dv1 = new CDataValue(); //ABC<42><43><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ָ<EFBFBD><D6B8>
dv1->type = e_Value.attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (e_Value.attributes().contains("Coefficient")) {
dv1->strCoefficient = e_Value.attribute("Coefficient"); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
dv1->fCoefficient = e_Value.attribute("Coefficient").toFloat(); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
}
dv1->strOffset = e_Value.attribute("Offset"); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
dv1->iOffset = e_Value.attribute("Offset").toInt(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>) = <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> - װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
dv1->DO = e_Value.attribute("DO"); //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
dv1->strName = strDVNameTemp.replace(strValueTemp, QString::number(i + e_Value.attribute("Offset").toInt())); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%0,49%<25>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>SI_%0,49%<25><>ΪSI_1
dv1->DA = strDANameTemp.replace(substring, QString::number(i - strDAoffset)); //<2F><>DA<44><41>%-2<>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>phs*Har[1]$mag$f
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
//zw<7A>޸<EFBFBD> 2023 - 8 - 14 Ϊ<><CEAA>ʷ<EFBFBD><CAB7><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD> Value<75>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-BaseFlag LimitUp LimitDown
if (e_Value.attributes().contains("BaseFlag"))
{
dv1->BaseFlag = e_Value.attribute("BaseFlag");
if (dv1->BaseFlag == "1") {
dt->BaseFlag1++;
}
else {
dt->BaseFlag0++;
}
}
else
{
dt->BaseFlag0++;
dv1->BaseFlag = "0";
}
if (e_Value.attributes().contains("LimitUp"))
{
dv1->LimitUp = e_Value.attribute("LimitUp");
}
else
{
dv1->LimitUp = "not define";
}
if (e_Value.attributes().contains("LimitDown"))
{
dv1->LimitDown = e_Value.attribute("LimitDown");
}
else
{
dv1->LimitDown = "not define";
}
if (!dv1->DO.isEmpty() && !dv1->DA.isEmpty()) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
dv1->strFullName = dv1->DO + "$" + dv1->DA;
else
dv1->strFullName = "not define";
sq->DataValueList.push_back(dv1); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ABC<42><43><EFBFBD><EFBFBD>)
} //<2F><><EFBFBD><EFBFBD>ABC<42><43><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
}
else //<2F><>-<2D>ڷ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ(ABC<42><43><EFBFBD><EFBFBD>)-------------------------------
{
CDataValue* dv2 = new CDataValue(); //ABC<42><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ָ<EFBFBD><D6B8>
dv2->strName = e_Value.attribute("name"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dv2->type = e_Value.attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (e_Value.attributes().contains("Coefficient")) {
dv2->strCoefficient = e_Value.attribute("Coefficient"); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
dv2->fCoefficient = e_Value.attribute("Coefficient").toFloat(); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
}
dv2->DO = e_Value.attribute("DO"); //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
dv2->DA = strDAName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//zw<7A>޸<EFBFBD> 2023 - 8 - 14 Ϊ<><CEAA>ʷ<EFBFBD><CAB7><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD> Value<75>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-BaseFlag LimitUp LimitDown
if (e_Value.attributes().contains("BaseFlag"))
{
dv2->BaseFlag = e_Value.attribute("BaseFlag");
if (dv2->BaseFlag == "1") {
dt->BaseFlag1++;
}
else {
dt->BaseFlag0++;
}
}
else
{
dt->BaseFlag0++;
dv2->BaseFlag = "0";
}
if (e_Value.attributes().contains("LimitUp"))
{
dv2->LimitUp = e_Value.attribute("LimitUp");
}
else
{
dv2->LimitUp = "not define";
}
if (e_Value.attributes().contains("LimitDown"))
{
dv2->LimitDown = e_Value.attribute("LimitDown");
}
else
{
dv2->LimitDown = "not define";
}
if (!e_Value.attribute("PltFlag").isEmpty() && e_Value.attribute("PltFlag") == "True") //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
dv2->bPlt = true; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
else
dv2->bPlt = false; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!dv2->DO.isEmpty() && !dv2->DA.isEmpty()) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
dv2->strFullName = dv2->DO + "$" + dv2->DA;
else
dv2->strFullName = "not define";
sq->DataValueList.push_back(dv2); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ABC<42><43><EFBFBD><EFBFBD>)
}
} //<2F><>ȡABC<42><43><EFBFBD><EFBFBD>Value <20><><EFBFBD><EFBFBD>
} //<2F>ж<EFBFBD>node5ΪԪ<CEAA><D4AA> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD>ABC<42><43><EFBFBD><EFBFBD>Value<75>б<EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD> ABC<42><43><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
}
} //<2F><>-<2D>ٶ<EFBFBD>ȡABC<42><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
2025-02-14 16:44:38 +08:00
if (xml_flag && "V" == it->strItemName && "112" == strPhase) //lnk2024-8-13<31><33><EFBFBD><EFBFBD>
{
for (int n = 0; n < 3; n++) //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>)
{
CSequence* sq = new CSequence(); //AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
sq->strSValue = node4.toElement().attribute("value"); //<2F><><EFBFBD><EFBFBD>ֵ(7<><37>ABC<42><43><EFBFBD>ࡢ112:<3A><>AB,BC,CA 8<><38>T<EFBFBD><54>)
sq->type = node4.toElement().attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
sq->strSeq = strLine[n]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>AB<41><42>BC<42><43>CA
it->SequenceList.push_back(sq); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strTag5 = node4.toElement().tagName(); //Sequence<63>ڵ<EFBFBD>
if ("Sequence" == strTag5) //<2F>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Sequence
{
QDomNodeList list5 = node4.childNodes(); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>Sequence<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>б<EFBFBD>
for (int i5 = 0; i5 < list5.count(); i5++) //<2F><><EFBFBD><EFBFBD> AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>Value<75>б<EFBFBD>
{
QDomNode node5 = list5.at(i5); //node5 <Value>
if (node5.isElement())
{
QDomElement e_Value = node5.toElement(); //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪԪ<CEAA><D4AA>
QString strTag6 = e_Value.tagName(); //<2F><><EFBFBD><EFBFBD>Sequence<63><65> <20><><EFBFBD><EFBFBD>DataValue<75>ӽڵ<D3BD>
if ("Value" == strTag6) //<2F>޶<EFBFBD>ȡAB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>Value
{
QString strDVName = e_Value.attribute("name"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strDAName = e_Value.attribute("DA"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (strDAName.indexOf("phs*") >= 0) //DA<44><41><EFBFBD><EFBFBD>"phs*"
strDAName = strDAName.replace("*", sq->strSeq); //<2F><>DA<44><41><EFBFBD><EFBFBD>*<2A>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(AB<41><42>BC<42><43>CA) <20><><EFBFBD><EFBFBD>phsAB$cVal$mag$f
//<2F><>-<2D><>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ(AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>)-------------------------------------
if (strDVName.indexOf("%") >= 0 && strDAName.indexOf("%-") >= 0) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>% <20><> DA<44><41><EFBFBD><EFBFBD>%- <20><><EFBFBD><EFBFBD>V_%0,49%_MAX
{
QStringList strHarm1 = strDVName.split('%');
if (strHarm1.count() >= 2) //<2F><><EFBFBD><EFBFBD>%0,49%
{
strValueTemp = "%" + strHarm1.at(1) + "%"; //<2F><><EFBFBD><EFBFBD>%0,49%
QStringList strHarm2 = strHarm1.at(1).split(','); //<2F><><EFBFBD><EFBFBD>0,49
if (strHarm2.count() >= 2)
{
nStart = (strHarm2.at(0)).toInt(); //г<><D0B3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>0
nEnd = (strHarm2.at(1)).toInt(); //г<><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>49
}
}
QString substring = strDAName.mid(strDAName.indexOf("[") + 1, strDAName.indexOf("]") - strDAName.indexOf("[") - 1);
QStringList strDAList1 = substring.split('-');
int strDAoffset = (strDAList1.at(1)).toInt();
for (int i = nStart; i <= nEnd; i++) //<2F><><EFBFBD><EFBFBD> AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
QString strDVNameTemp = strDVName; //<2F><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strDANameTemp = strDAName;//<2F><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataValue* dv1 = new CDataValue(); //AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ָ<EFBFBD><D6B8>
dv1->type = e_Value.attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (e_Value.attributes().contains("Coefficient")) {
dv1->strCoefficient = e_Value.attribute("Coefficient"); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
dv1->fCoefficient = e_Value.attribute("Coefficient").toFloat(); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
}
dv1->strOffset = e_Value.attribute("Offset"); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
dv1->iOffset = e_Value.attribute("Offset").toInt(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>) = <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> - װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
dv1->DO = e_Value.attribute("DO"); //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
std::cout << "!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!" << std::endl;
std::cout << dv1->DO.toUtf8().constData() << std::endl; //lnk <20><><EFBFBD><EFBFBD>ppv
std::cout << "!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!" << std::endl;
dv1->strName = strDVNameTemp.replace(strValueTemp, QString::number(i + e_Value.attribute("Offset").toInt())); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%0,49%<25>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>SI_%0,49%<25><>ΪSI_1
dv1->DA = strDANameTemp.replace(substring, QString::number(i - strDAoffset)); //<2F><>DA<44><41>%-2<>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>phs*Har[1]$mag$f
2025-04-29 15:05:36 +08:00
2025-02-14 16:44:38 +08:00
//zw<7A>޸<EFBFBD> 2023 - 8 - 14 Ϊ<><CEAA>ʷ<EFBFBD><CAB7><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD> Value<75>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-BaseFlag LimitUp LimitDown
if (e_Value.attributes().contains("BaseFlag"))
{
dv1->BaseFlag = e_Value.attribute("BaseFlag");
if (dv1->BaseFlag == "1") {
dt->BaseFlag1++;
}
else {
dt->BaseFlag0++;
}
}
else
{
dt->BaseFlag0++;
dv1->BaseFlag = "0";
}
if (e_Value.attributes().contains("LimitUp"))
{
dv1->LimitUp = e_Value.attribute("LimitUp");
}
else
{
dv1->LimitUp = "not define";
}
if (e_Value.attributes().contains("LimitDown"))
{
dv1->LimitDown = e_Value.attribute("LimitDown");
}
else
{
dv1->LimitDown = "not define";
}
if (!dv1->DO.isEmpty() && !dv1->DA.isEmpty()) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
dv1->strFullName = dv1->DO + "$" + dv1->DA;
else
dv1->strFullName = "not define";
sq->DataValueList.push_back(dv1); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>)
} //<2F><><EFBFBD><EFBFBD>ABC<42><43><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
2025-04-29 15:05:36 +08:00
2025-02-14 16:44:38 +08:00
}
else //<2F><>-<2D>ڷ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ(AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>)-------------------------------
{
CDataValue* dv2 = new CDataValue(); //ABC<42><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ָ<EFBFBD><D6B8>
dv2->strName = e_Value.attribute("name"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dv2->type = e_Value.attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (e_Value.attributes().contains("Coefficient")) {
dv2->strCoefficient = e_Value.attribute("Coefficient"); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
dv2->fCoefficient = e_Value.attribute("Coefficient").toFloat(); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
}
dv2->DO = e_Value.attribute("DO"); //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
dv2->DA = strDAName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-03-18 11:25:20 +08:00
std::cout << "!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!" << std::endl;
std::cout << dv2->DO.toUtf8().constData() << std::endl; //lnk <20><><EFBFBD><EFBFBD>ppv
std::cout << "!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!" << std::endl;
2025-02-14 16:44:38 +08:00
//zw<7A>޸<EFBFBD> 2023 - 8 - 14 Ϊ<><CEAA>ʷ<EFBFBD><CAB7><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD> Value<75>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-BaseFlag LimitUp LimitDown
if (e_Value.attributes().contains("BaseFlag"))
{
dv2->BaseFlag = e_Value.attribute("BaseFlag");
if (dv2->BaseFlag == "1") {
dt->BaseFlag1++;
}
else {
dt->BaseFlag0++;
}
}
else
{
dt->BaseFlag0++;
dv2->BaseFlag = "0";
}
if (e_Value.attributes().contains("LimitUp"))
{
dv2->LimitUp = e_Value.attribute("LimitUp");
}
else
{
dv2->LimitUp = "not define";
}
if (e_Value.attributes().contains("LimitDown"))
{
dv2->LimitDown = e_Value.attribute("LimitDown");
}
else
{
dv2->LimitDown = "not define";
}
if (!e_Value.attribute("PltFlag").isEmpty() && e_Value.attribute("PltFlag") == "True") //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
dv2->bPlt = true; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
else
dv2->bPlt = false;//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!dv2->DO.isEmpty() && !dv2->DA.isEmpty()) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
dv2->strFullName = dv2->DO + "$" + dv2->DA;
else
dv2->strFullName = "not define";
sq->DataValueList.push_back(dv2); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>)
}
} //<2F><>ȡAB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>Value <20><><EFBFBD><EFBFBD>
}//<2F>ж<EFBFBD>node5ΪԪ<CEAA><D4AA> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD>AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>Value<75>б<EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD> AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
}
}//<2F><>-<2D>ٶ<EFBFBD>ȡAB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
2025-01-16 16:17:01 +08:00
if ("8" == strPhase) //<2F><>-<2D>ڶ<EFBFBD>ȡT<C8A1><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
CSequence* sq = new CSequence(); //T<><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
sq->strSValue = node4.toElement().attribute("value"); //<2F><><EFBFBD><EFBFBD>ֵ
sq->type = node4.toElement().attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
sq->strSeq = strPhasic[3]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
it->SequenceList.push_back(sq); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(T<><54>)
QDomNodeList list5 = node4.childNodes(); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>Sequence<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>б<EFBFBD>
for (int i5 = 0; i5 < list5.count(); i5++) //<2F><><EFBFBD><EFBFBD> T<><54>Value<75>б<EFBFBD>
{
QDomNode node5 = list5.at(i5); //node5 <Value>
if (node5.isElement())
{
QDomElement e_Value = node5.toElement(); //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪԪ<CEAA><D4AA>
QString strTag6 = e_Value.tagName(); //<2F><><EFBFBD><EFBFBD>Sequence<63><65> <20><><EFBFBD><EFBFBD>DataValue<75>ӽڵ<D3BD>
if ("Value" == strTag6) //<2F>޶<EFBFBD>ȡT<C8A1><54>Value
{
//<2F><>-<2D><>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ(T<><54>) ע<><D7A2>T<EFBFBD><54>û<EFBFBD><C3BB>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>-<2D>ڷ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ(T<><54>)
CDataValue* dv2 = new CDataValue(); //T<><54><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ָ<EFBFBD><D6B8>
dv2->strName = e_Value.attribute("name"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dv2->type = e_Value.attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (e_Value.attributes().contains("Coefficient")) {
dv2->strCoefficient = e_Value.attribute("Coefficient"); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
dv2->fCoefficient = e_Value.attribute("Coefficient").toFloat(); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
}
dv2->DO = e_Value.attribute("DO"); //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
dv2->DA = e_Value.attribute("DA"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//zw<7A>޸<EFBFBD> 2023 - 8 - 14 Ϊ<><CEAA>ʷ<EFBFBD><CAB7><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD> Value<75>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-BaseFlag LimitUp LimitDown
if (e_Value.attributes().contains("BaseFlag"))
{
dv2->BaseFlag = e_Value.attribute("BaseFlag");
if (dv2->BaseFlag == "1") {
dt->BaseFlag1++;
}
else {
dt->BaseFlag0++;
}
}
else
{
dt->BaseFlag0++;
dv2->BaseFlag = "0";
}
if (e_Value.attributes().contains("LimitUp"))
{
dv2->LimitUp = e_Value.attribute("LimitUp");
}
else
{
dv2->LimitUp = "not define";
}
if (e_Value.attributes().contains("LimitDown"))
{
dv2->LimitDown = e_Value.attribute("LimitDown");
}
else
{
dv2->LimitDown = "not define";
}
if (!dv2->DO.isEmpty() && !dv2->DA.isEmpty()) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
dv2->strFullName = dv2->DO + "$" + dv2->DA;
else
dv2->strFullName = "not define";
sq->DataValueList.push_back(dv2); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ABC<42><43><EFBFBD><EFBFBD>)
} //<2F><>ȡT<C8A1><54>Value <20><><EFBFBD><EFBFBD>
} //<2F>ж<EFBFBD>node5ΪԪ<CEAA><D4AA> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD>T<EFBFBD><54>Value<75>б<EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F><>-<2D>ڶ<EFBFBD>ȡT<C8A1><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F>ж<EFBFBD>node4ΪԪ<CEAA><D4AA> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD>Sequence<63>б<EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Item <20><><EFBFBD><EFBFBD>
} //<2F>ж<EFBFBD>node3ΪԪ<CEAA><D4AA> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD>Item<65>б<EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F><>ȡMonitor<6F>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F>ж<EFBFBD>node2ΪԪ<CEAA><D4AA> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD>Monitor<6F>б<EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DataType <20><><EFBFBD><EFBFBD>
} //<2F>ж<EFBFBD>nodeΪԪ<CEAA><D4AA> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD>DataType<70>б<EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F><>ȡTopic<69>ڵ<EFBFBD>HISDATA<54><41>RTDATA <20><><EFBFBD><EFBFBD>
else if ("Topic" == strTag && "RTDATASOE" == topic->strTopic) //SOE<4F>¼<EFBFBD>-------------------------------------------------------
{
QDomNodeList list = e.childNodes(); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>Topic<69><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>б<EFBFBD>
for (int i = 0; i < list.count(); i++) //<2F><><EFBFBD><EFBFBD> DataType<70>б<EFBFBD>
{
QDomNode node = list.at(i); //node1 <DataType>
if (node.isElement())
{
CDataType* dt = new CDataType(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
dt->iDataType = node.toElement().attribute("value").toInt(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ(1-<2D><>̬SOE<4F><45>2-<2D><><EFBFBD><EFBFBD>SOE<4F><45>3-<2D><>̬SOE)
dt->type = node.toElement().attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
topic->DataTypeList.push_back(dt); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strTag2 = node.toElement().tagName(); //DataType<70>ڵ<EFBFBD>
if ("DataType" == strTag2) //<2F>ڶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DataType
{
QDomNodeList list2 = node.childNodes(); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>DataType<70><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>б<EFBFBD>
for (int i2 = 0; i2 < list2.count(); i2++) //<2F><><EFBFBD><EFBFBD> SOE<4F>б<EFBFBD>
{
QDomNode node2 = list2.at(i2); //node2 <SOE>
if (node2.isElement())
{
CEventData* ed = new CEventData(); //SOE<4F>¼<EFBFBD><C2BC><EFBFBD>ָ<EFBFBD><D6B8>
ed->triggerFlag = node2.toElement().attribute("TriggerFlag"); //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
ed->DO = node2.toElement().attribute("DO"); //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
ed->DA = node2.toElement().attribute("DA"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ed->type = node2.toElement().attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>type<70><65><EFBFBD>ͣ<EFBFBD>0-DataType 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D>޳<EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD> 3-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD> 4-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5-<2D><>λ 6-ֵ<><D6B5><EFBFBD><EFBFBD> 9-ʵʱSOE<4F>¼<EFBFBD>
if (!ed->DO.isEmpty() && !ed->DA.isEmpty()) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
ed->strFullName = ed->DO + "$" + ed->DA;
else
ed->strFullName = "not define";
dt->SOEList.push_back(ed); //<2F><><EFBFBD><EFBFBD> SOE<4F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
} //<2F>ж<EFBFBD>node2ΪԪ<CEAA><D4AA> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD>SOE<4F>б<EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DataType<70>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F>ж<EFBFBD>nodeΪԪ<CEAA><D4AA> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD>DataType<70>б<EFBFBD> <20><><EFBFBD><EFBFBD>
} //Topic<69>ڵ<EFBFBD>RTDATASOE <20><><EFBFBD><EFBFBD>
else if ("Topic" == strTag && "SOEDATA" == topic->strTopic)
{
QDomNodeList list = e.childNodes(); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>Topic<69><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>б<EFBFBD>
for (int i = 0; i < list.count(); i++) //<2F><><EFBFBD><EFBFBD> DataType<70>б<EFBFBD>
{
QDomNode node = list.at(i); //node1 <DataType>
if (node.isElement())
{
CEventData* ed = new CEventData(); //SOE<4F>¼<EFBFBD><C2BC><EFBFBD>ָ<EFBFBD><D6B8>
ed->triggerFlag = node.toElement().attribute("name"); //SOE<4F><45><EFBFBD><EFBFBD>
ed->DO = node.toElement().attribute("DO"); //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
ed->DA = node.toElement().attribute("DA"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ed->type = node.toElement().attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>type<70><65><EFBFBD>ͣ<EFBFBD>0-DataType 1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D>޳<EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD> 3-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD> 4-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5-<2D><>λ 6-ֵ<><D6B5><EFBFBD><EFBFBD> 9-ʵʱSOE<4F>¼<EFBFBD>
if (!ed->DO.isEmpty() && !ed->DA.isEmpty()) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
ed->strFullName = ed->DO + "$" + ed->DA;
else
ed->strFullName = "not define";
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
cfg->SOEList.push_back(ed);
}
}
}
}
if ("ReportMap" == strTag)//zw<7A>޸<EFBFBD> 2023 - 8 - 15 <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>XML ԭ<><D4AD><EFBFBD><EFBFBD>RptLogCfg.iniȡ<69><C8A1>
{
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
}
if ("Topic" != strTag && "ReportMap" != strTag)//zw<7A>޸<EFBFBD> 2023 - 8 - 14 <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڵ<D6BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
{
if ("WavePhasic" == strTag)
{
cfg->WavePhasicFlag.append(e.attribute("Flag"));
if (cfg->WavePhasicFlag == "1") {
cfg->WavePhasicA.append(e.attribute("A"));
cfg->WavePhasicB.append(e.attribute("B"));
cfg->WavePhasicC.append(e.attribute("C"));
}
}
if ("UnitOfTime" == strTag)
{
cfg->UnitOfTimeUnit.append(e.attribute("Unit"));
}
if ("ValueOfTime" == strTag)
{
cfg->ValueOfTimeUnit.append(e.attribute("Unit"));
}
if ("ComtradeFile" == strTag)
{
cfg->WaveTimeFlag.append(e.attribute("WaveTimeFlag"));
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
}
if ("IED" == strTag)
{
cfg->IEDname.append(e.attribute("name"));
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
}
if ("LDevice" == strTag)
{
cfg->LDevicePrefix.append(e.attribute("Prefix"));
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
}
}
} //<2F>ж<EFBFBD>nΪԪ<CEAA><D4AA> <20><><EFBFBD><EFBFBD>
n = n.nextSibling();//<2F><>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD>ֵܽڵ<DCBD>(HISDATA <20><>> RTDATA <20><>> RTDATASOE)
} //while (!n.isNull) <20><><EFBFBD><EFBFBD>
return true;
}
/// <summary>
/// czy 2023-11-23 <20><><EFBFBD><EFBFBD>json<6F><6E>װ<EFBFBD>ü<EFBFBD><C3BC><EFBFBD>Ƶ,<2C><>ӡǰ̨
/// </summary>
/// <param name="flag">1<><31>,2<><32>,3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>interval</param>
/// <param name="interval">1<><31>,2<><32>,3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>interval</param>
void print_interval(int flag,int interval) {
if (flag == 1) {
cout << "interval!!dont't contain mp_id ,interval=1" << endl;
}
else if (flag == 2) {
cout << "interval!!contain mp_id but interval=0, set interval=1" << endl;
}
else
{
cout << "interval!!contain mp_id , find interval=" << interval << endl;
}
}
2025-02-14 16:44:38 +08:00
/// <summary>
/// czy kafka<6B><61>json<6F>н<EFBFBD><D0BD>ߵ<EFBFBD>ѹת<D1B9><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
/// </summary>
/// <param name="pSequence"></param>
/// <returns></returns>
QString line_to_phasic(QString qstrSeq) {
if (qstrSeq == "A" || qstrSeq == "AB") {
return "A";
}
else if (qstrSeq == "B" || qstrSeq == "BC") {
return "B";
}
else if (qstrSeq == "C" || qstrSeq == "CA") {
return "C";
}
else {
return qstrSeq;
}
}
//20250214<31><34><EFBFBD>ӽ<EFBFBD><D3BD>ͽ<EFBFBD><CDBD>ߴ<EFBFBD><DFB4><EFBFBD>
int transfer_json_block_data(char v_wiring_type[], json_block_data *data) //json<6F><6E><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD> zw<7A>޸<EFBFBD> 2023-8-11 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>json<6F>ṹ Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
2025-01-16 16:17:01 +08:00
{
list<CTopic*> ctopic_list;
2025-02-14 16:44:38 +08:00
////lnk2024-8-15 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
2025-03-18 11:25:20 +08:00
if (strcmp(v_wiring_type, "0") == 0) //lnk2024-8-15 <20><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
2025-02-14 16:44:38 +08:00
{
2025-02-17 16:58:14 +08:00
cout << "1 report v_wiring_type is" << v_wiring_type << endl;
2025-02-14 16:44:38 +08:00
if (xmlinfo_list.contains(data->dev_type)) {
cout << "transfer_json_block_data contain data->dev_type" << endl;
ctopic_list = xmlinfo_list[data->dev_type]->topicList;
}
else {
2025-02-17 16:58:14 +08:00
cout << "transfer_json_block_data not contain data->dev_type:" << data->dev_type.toStdString() << " !!!!"<< endl;
2025-02-14 16:44:38 +08:00
ctopic_list = topicList;
}
}
else //lnk2024-8-15 <20><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
{
2025-02-17 16:58:14 +08:00
cout << "2 report v_wiring_type is" << v_wiring_type << endl;
2025-02-14 16:44:38 +08:00
if (xmlinfo_list2.contains(data->dev_type)) {
cout << "transfer_json_block_data contain data->dev_type" << endl;
ctopic_list = xmlinfo_list2[data->dev_type]->topicList;
}
else {
2025-02-17 16:58:14 +08:00
cout << "transfer_json_block_data not contain data->dev_type:" << data->dev_type.toStdString() << " !!!!"<< endl;
2025-03-18 11:25:20 +08:00
ctopic_list = topicList2;
2025-02-14 16:44:38 +08:00
}
}
2025-01-16 16:17:01 +08:00
bool shortjumpflag = false;
bool longjumpflag = false;
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
//zw<7A>޸<EFBFBD> end
if (!inited) //<2F><>ʼ<EFBFBD><CABC> JiangSu_Config.xml
{
inited = true;
}
if (NULL == data) //jsonƴ<6E>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Ϊ<EFBFBD><CEAA>
return 0;
if (100 == data->func_type) //һ<><D2BB><EFBFBD><EFBFBD>̬/ͳ<><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>> MMS_Client
{
list<CTopic*>::iterator tp = ctopic_list.begin();
while (tp != ctopic_list.end()) //<2F>ٱ<EFBFBD><D9B1><EFBFBD> Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
CTopic* pTopic = *tp++;
if ("HISDATA" == pTopic->strTopic) //Topic<69><63><EFBFBD><EFBFBD>HISDATA
{
list<CDataType*>::iterator dt = pTopic->DataTypeList.begin(); //<2F>ڱ<EFBFBD><DAB1><EFBFBD> DataTypeList
while (dt != pTopic->DataTypeList.end())
{
bool isJump = false; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D1AD>
CDataType* pDataType = *dt++;
if (2 == pDataType->iDataType) //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>------------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "PST"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
long long time_sec; //ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>)
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\" ").arg(pDataType->iDataType, 2, 10, QChar('0'))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD> "02"
KafkaData.strText.append(QString(", \"Monitor\":\"%1\" ").arg(data->mp_id));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "1100"
list<CMonitor*>::iterator mt = pDataType->MonitorList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> MonitorList
int countflag = 0, num = 0;
while (mt != pDataType->MonitorList.end())
{
CMonitor* pMonitor = *mt++;
KafkaData.strText.append(QString(", \"%1\":{").arg("Value")); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CItem*>::iterator it = pMonitor->ItemList.begin(); //<2F>ܱ<EFBFBD><DCB1><EFBFBD> ItemList
list<CItem*>::iterator itEnd = pMonitor->ItemList.end(); //ItemList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (it != pMonitor->ItemList.end())
{
CItem* pItem = *it++;
2025-03-06 15:24:49 +08:00
//////////////////////////////////////////////////////////lnk20250306Ϊ<36><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FLAG
if ("FLAG" == pItem->strItemName) //<2F>޳<EFBFBD>"FLAG"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"FLAG\":%1, ").arg(data->flag)); //ƴ<><C6B4> json<6F>޳<EFBFBD><DEB3><EFBFBD><EFBFBD>ǣ<EFBFBD>1<EFBFBD><31><EFBFBD>޳<EFBFBD><DEB3><EFBFBD>0<EFBFBD>޳<EFBFBD><DEB3><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>޳<EFBFBD>
continue;
}
//////////////////////////////////////////////////////////
2025-01-16 16:17:01 +08:00
if ("TIME" == pItem->strItemName) //<2F>޳<EFBFBD>"FLAG"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
time_sec = data->time / 1000; //ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>)
continue;
}
KafkaData.strText.append(QString("\"%1\":{").arg(pItem->strItemName)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F
list<CSequence*>::iterator sq = pItem->SequenceList.begin(); //<2F>ݱ<EFBFBD><DDB1><EFBFBD> SequenceList
list<CSequence*>::iterator sqEnd = pItem->SequenceList.end(); //SequenceList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (sq != pItem->SequenceList.end())
{
CSequence* pSequence = *sq++;
2025-04-29 15:05:36 +08:00
2025-02-14 16:44:38 +08:00
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
2025-01-16 16:17:01 +08:00
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
list<CDataValue*>::iterator dvEnd = pSequence->DataValueList.end(); //DataValueList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
num = num + pSequence->DataValueList.size();
while (dv != pSequence->DataValueList.end())
{
CDataValue* pDataValue = *dv++;
if ("NOT DEFINE" == pDataValue->strFullName || "not define" == pDataValue->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
{
countflag++;
continue;
}
if (!data->mms_str_map.contains(pDataValue->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
{
isJump = false; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
countflag++;
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":%2, ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
else
KafkaData.strText.append(QString("\"%1\":%2 ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
continue;
}
try
{
double dTemp = data->mms_str_map.value(pDataValue->strFullName) * pDataValue->fCoefficient; //<2F>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> * ϵ<><CFB5>
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\",").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
}
catch (exception& e)
{
cout << "<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //DataValueList <20><><EFBFBD><EFBFBD>
if (!KafkaData.strText.isEmpty()) {
if (KafkaData.strText[KafkaData.strText.length() - 1] == ',') {
KafkaData.strText = KafkaData.strText.remove(KafkaData.strText.size() - 1, 1);
KafkaData.strText.append(" ");
cout << "KafkaData.strText = KafkaData.strText.chopped(1) " << endl;
}
}
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (sq != sqEnd) //<2F><>A<EFBFBD><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //SequenceList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (it != itEnd) //<2F><> V<><56>I<EFBFBD><49>PQ<50><51><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //ItemList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
} //MonitorList <20><><EFBFBD><EFBFBD>
if (isJump) continue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
cout << countflag << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!send name=\"DATA_TYPE\" value=\"02\" " << num << endl;
cout << KafkaData.strText.toAscii().data() << endl;
if (countflag < num) {
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
shortjumpflag = true;
}
} //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------------------------------
//20241204<30><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>Ϊ3
if (3 == pDataType->iDataType) //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>------------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "PLT"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
long long time_sec; //ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>)
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\" ").arg(pDataType->iDataType, 2, 10, QChar('0'))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD> "02"
KafkaData.strText.append(QString(", \"Monitor\":\"%1\" ").arg(data->mp_id));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "1100"
list<CMonitor*>::iterator mt = pDataType->MonitorList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> MonitorList
int countflag = 0,num = 0;
while (mt != pDataType->MonitorList.end())
{
CMonitor* pMonitor = *mt++;
KafkaData.strText.append(QString(", \"%1\":{").arg("Value")); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CItem*>::iterator it = pMonitor->ItemList.begin(); //<2F>ܱ<EFBFBD><DCB1><EFBFBD> ItemList
list<CItem*>::iterator itEnd = pMonitor->ItemList.end(); //ItemList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (it != pMonitor->ItemList.end())
{
CItem* pItem = *it++;
2025-03-06 15:24:49 +08:00
//////////////////////////////////////////////////////////lnk20250306Ϊ<36><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FLAG
if ("FLAG" == pItem->strItemName) //<2F>޳<EFBFBD>"FLAG"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"FLAG\":%1, ").arg(data->flag)); //ƴ<><C6B4> json<6F>޳<EFBFBD><DEB3><EFBFBD><EFBFBD>ǣ<EFBFBD>1<EFBFBD><31><EFBFBD>޳<EFBFBD><DEB3><EFBFBD>0<EFBFBD>޳<EFBFBD><DEB3><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>޳<EFBFBD>
continue;
}
//////////////////////////////////////////////////////////
2025-01-16 16:17:01 +08:00
if ("TIME" == pItem->strItemName) //<2F>޳<EFBFBD>"FLAG"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
time_sec = data->time / 1000; //ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>)
continue;
}
KafkaData.strText.append(QString("\"%1\":{").arg(pItem->strItemName)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F
list<CSequence*>::iterator sq = pItem->SequenceList.begin(); //<2F>ݱ<EFBFBD><DDB1><EFBFBD> SequenceList
list<CSequence*>::iterator sqEnd = pItem->SequenceList.end(); //SequenceList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (sq != pItem->SequenceList.end())
{
CSequence* pSequence = *sq++;
//KafkaData.strText.append(QString("{\"SEQ\":\"%1\", ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>
2025-02-14 16:44:38 +08:00
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
2025-01-16 16:17:01 +08:00
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
list<CDataValue*>::iterator dvEnd = pSequence->DataValueList.end(); //DataValueList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
num = num + pSequence->DataValueList.size();
while (dv != pSequence->DataValueList.end())
{
CDataValue* pDataValue = *dv++;
if ("NOT DEFINE" == pDataValue->strFullName || "not define" == pDataValue->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
{
countflag++;
continue;
}
if (!data->mms_str_map.contains(pDataValue->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
{
isJump = false; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
countflag++;
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":%2, ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
else
KafkaData.strText.append(QString("\"%1\":%2 ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
continue;
}
try
{
if (0 == time_sec % 7200) //2Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
{
double dTemp = data->mms_str_map.value(pDataValue->strFullName) * pDataValue->fCoefficient; //<2F>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> * ϵ<><CFB5>
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\", ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
}
}
catch (exception& e)
{
cout << "<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //DataValueList <20><><EFBFBD><EFBFBD>
if (!KafkaData.strText.isEmpty()) {
if (KafkaData.strText[KafkaData.strText.length() - 1] == ',') {
KafkaData.strText = KafkaData.strText.remove(KafkaData.strText.size() - 1, 1);
KafkaData.strText.append(" ");
cout << "KafkaData.strText = KafkaData.strText.chopped(1) " << endl;
}
}
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (sq != sqEnd) //<2F><>A<EFBFBD><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //SequenceList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (it != itEnd) //<2F><> V<><56>I<EFBFBD><49>PQ<50><51><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //ItemList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
} //MonitorList <20><><EFBFBD><EFBFBD>
if (isJump) continue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
cout<< countflag << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!send name=\"DATA_TYPE\" value=\"04\" " << num << endl;
cout << KafkaData.strText.toAscii().data() << endl;
if (countflag < num && 0 == time_sec % 7200) {
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
longjumpflag = true;
}
if (longjumpflag == true || shortjumpflag == true) {
return 1;
}
} //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------------------------------
if (1 == pDataType->iDataType) //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>-----------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "HISDATA"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\" ").arg(pDataType->iDataType, 2, 10,QChar('0'))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>̬ "01"
KafkaData.strText.append(QString(", \"Monitor\":\"%1\" ").arg(data->mp_id));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "1100"
list<CMonitor*>::iterator mt = pDataType->MonitorList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> MonitorList
while (mt != pDataType->MonitorList.end())
{
CMonitor* pMonitor = *mt++;
KafkaData.strText.append(QString(", \"%1\":{").arg("Value")); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CItem*>::iterator it = pMonitor->ItemList.begin(); //<2F>ܱ<EFBFBD><DCB1><EFBFBD> ItemList
list<CItem*>::iterator itEnd = pMonitor->ItemList.end(); //ItemList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (it != pMonitor->ItemList.end())
{
CItem* pItem = *it++;
if ("FLAG" == pItem->strItemName) //<2F>޳<EFBFBD>"FLAG"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"FLAG\":%1, ").arg(data->flag)); //ƴ<><C6B4> json<6F>޳<EFBFBD><DEB3><EFBFBD><EFBFBD>ǣ<EFBFBD>1<EFBFBD><31><EFBFBD>޳<EFBFBD><DEB3><EFBFBD>0<EFBFBD>޳<EFBFBD><DEB3><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>޳<EFBFBD>
continue;
}
if ("TIME" == pItem->strItemName) //<2F>޳<EFBFBD>"TIME"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"TIME\":%1, ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
if (!data_timespan_list.contains(data->mp_id)) {
KafkaData.strText.append(QString("\"interval\":%1, ").arg(3)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
}
else if (data_timespan_list[data->mp_id]->msspan == 0)
{
KafkaData.strText.append(QString("\"interval\":%1, ").arg(3)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
}
else {
KafkaData.strText.append(QString("\"interval\":%1, ").arg(data_timespan_list[data->mp_id]->msspan)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
}
continue;
}
KafkaData.strText.append(QString("\"%1\":{").arg(pItem->strItemName)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD> V<><56>I<EFBFBD><49>PQ
list<CSequence*>::iterator sq = pItem->SequenceList.begin(); //<2F>ݱ<EFBFBD><DDB1><EFBFBD> SequenceList
list<CSequence*>::iterator sqEnd = pItem->SequenceList.end(); //SequenceList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (sq != pItem->SequenceList.end())
{
CSequence* pSequence = *sq++;
2025-04-29 15:05:36 +08:00
2025-02-14 16:44:38 +08:00
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
2025-01-16 16:17:01 +08:00
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
list<CDataValue*>::iterator dvEnd = pSequence->DataValueList.end(); //DataValueList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (dv != pSequence->DataValueList.end())
{
CDataValue* pDataValue = *dv++;
if ("NOT DEFINE" == pDataValue->strFullName || "not define" == pDataValue->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
continue;
if (!data->mms_str_map.contains(pDataValue->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
{
isJump = false; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
//zw<7A>޸<EFBFBD> 2023-8-28 <20><>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":%2, ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
else
KafkaData.strText.append(QString("\"%1\":%2 ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
continue;
}
try
{
if (pDataValue->strFullName.indexOf("$ang$f") != -1) //<2F><><EFBFBD><EFBFBD>61850<35><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵĶ<C7B5><C4B6><EFBFBD>
{
double dAngleTemp = data->mms_str_map.value(pDataValue->strFullName); //<2F>Ƕ<EFBFBD>ֵ(-180<38><30> ~ 180<38><30>)
dAngleTemp = dAngleTemp > 180.0f ? dAngleTemp - 360.0f : dAngleTemp;
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\", ").arg(pDataValue->strName).arg(QString::number(dAngleTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dAngleTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
}
else
{
double dTemp = data->mms_str_map.value(pDataValue->strFullName) * pDataValue->fCoefficient; //<2F>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> * ϵ<><CFB5>
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\", ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>ǽǶ<C7BD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>ǽǶ<C7BD>ֵ)
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
}
}
catch (exception& e)
{
cout << "<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //DataValueList <20><><EFBFBD><EFBFBD>
if (!KafkaData.strText.isEmpty()) {
if (KafkaData.strText[KafkaData.strText.length() - 1] == ',') {
KafkaData.strText = KafkaData.strText.remove(KafkaData.strText.size() - 1, 1);
KafkaData.strText.append(" ");
cout << "KafkaData.strText = KafkaData.strText.chopped(1) " << endl;
}
}
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (sq != sqEnd) //<2F><>A<EFBFBD><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //SequenceList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (it != itEnd) //<2F><> V<><56>I<EFBFBD><49>PQ<50><51><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //ItemList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
} //MonitorList <20><><EFBFBD><EFBFBD>
if (isJump) continue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------------------------------
} //DataTypeList <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD> HISDATA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} //TopicList <20><><EFBFBD><EFBFBD>
} //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (200 == data->func_type) //<2F><><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>> MMS_Assist
{
list<CTopic*>::iterator tp = ctopic_list.begin();
while (tp != ctopic_list.end()) //<2F>ٱ<EFBFBD><D9B1><EFBFBD> Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
CTopic* pTopic = *tp++;
if ("RTDATA" == pTopic->strTopic) //Topic<69><63><EFBFBD><EFBFBD>RTDATA------------------------------------------------------------
{
list<CDataType*>::iterator dt = pTopic->DataTypeList.begin(); //<2F>ڱ<EFBFBD><DAB1><EFBFBD> DataTypeList
while (dt != pTopic->DataTypeList.end())
{
bool isJump = false; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D1AD>
CDataType* pDataType = *dt++;
if (1 == pDataType->iDataType) //<2F><>-<2D><>ʵʱ3s<33><73><EFBFBD><EFBFBD>--------------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "RTDATA"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\" ").arg(pDataType->iDataType, 2, 10, QChar('0'))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1>̬ "01"
KafkaData.strText.append(QString(", \"Monitor\":\"%1\" ").arg(data->mp_id));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "1100"
list<CMonitor*>::iterator mt = pDataType->MonitorList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> MonitorList
while (mt != pDataType->MonitorList.end())
{
CMonitor* pMonitor = *mt++;
KafkaData.strText.append(QString(", \"%1\":{").arg("Value")); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CItem*>::iterator it = pMonitor->ItemList.begin(); //<2F>ܱ<EFBFBD><DCB1><EFBFBD> ItemList
list<CItem*>::iterator itEnd = pMonitor->ItemList.end(); //ItemList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (it != pMonitor->ItemList.end())
{
CItem* pItem = *it++;
if ("FLAG" == pItem->strItemName) //<2F>޳<EFBFBD>"FLAG"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"FLAG\":\"%1\", ").arg(data->flag)); //ƴ<><C6B4> json<6F>޳<EFBFBD><DEB3><EFBFBD><EFBFBD>ǣ<EFBFBD>1<EFBFBD><31><EFBFBD>޳<EFBFBD><DEB3><EFBFBD>0<EFBFBD>޳<EFBFBD><DEB3><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>޳<EFBFBD>
continue;
}
if ("TIME" == pItem->strItemName) //<2F>޳<EFBFBD>"TIME"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
continue;
}
KafkaData.strText.append(QString("\"%1\":{").arg(pItem->strItemName)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD> V<><56>I<EFBFBD><49>PQ
list<CSequence*>::iterator sq = pItem->SequenceList.begin(); //<2F>ݱ<EFBFBD><DDB1><EFBFBD> SequenceList
list<CSequence*>::iterator sqEnd = pItem->SequenceList.end(); //SequenceList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (sq != pItem->SequenceList.end())
{
CSequence* pSequence = *sq++;
2025-04-29 15:05:36 +08:00
2025-02-14 16:44:38 +08:00
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
2025-01-16 16:17:01 +08:00
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
list<CDataValue*>::iterator dvEnd = pSequence->DataValueList.end(); //DataValueList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (dv != pSequence->DataValueList.end())
{
CDataValue* pDataValue = *dv++;
if ("NOT DEFINE" == pDataValue->strFullName || "not define" == pDataValue->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
continue;
if (!data->mms_str_map.contains(pDataValue->strFullName) && pDataValueBegin->strName == pDataValue->strName)//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
{
isJump = true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
break;
}
try
{
if (pDataValue->strFullName.indexOf("$ang$f") != -1) //<2F><><EFBFBD><EFBFBD>61850<35><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵĶ<C7B5><C4B6><EFBFBD>
{
double dAngleTemp = data->mms_str_map.value(pDataValue->strFullName); //<2F>Ƕ<EFBFBD>ֵ(-180<38><30> ~ 180<38><30>)
dAngleTemp = dAngleTemp > 180.0f ? dAngleTemp - 360.0f : dAngleTemp;
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\", ").arg(pDataValue->strName).arg(QString::number(dAngleTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dAngleTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
}
else
{
double dTemp = data->mms_str_map.value(pDataValue->strFullName) * pDataValue->fCoefficient; //<2F>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> * ϵ<><CFB5>
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\", ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>ǽǶ<C7BD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>ǽǶ<C7BD>ֵ)
}
}
catch (exception& e)
{
cout << "ʵʱ3s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //DataValueList <20><><EFBFBD><EFBFBD>
if (!KafkaData.strText.isEmpty()) {
if (KafkaData.strText[KafkaData.strText.length() - 1] == ',') {
KafkaData.strText = KafkaData.strText.remove(KafkaData.strText.size() - 1, 1);
KafkaData.strText.append(" ");
cout << "KafkaData.strText = KafkaData.strText.chopped(1) " << endl;
}
}
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (sq != sqEnd) //<2F><>A<EFBFBD><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //SequenceList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (it != itEnd) //<2F><> V<><56>I<EFBFBD><49>PQ<50><51><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //ItemList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
} //MonitorList <20><><EFBFBD><EFBFBD>
if (isJump) continue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} //<2F><>-<2D><>ʵʱ3s<33><73><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>----------------------------------
if (2 == pDataType->iDataType) //<2F><>-<2D><>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-----------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "RTDATA"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
long long time_sec; //ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>)
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\" ").arg(pDataType->iDataType, 2, 10, QChar('0'))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD> "02"
KafkaData.strText.append(QString(", \"Monitor\":\"%1\" ").arg(data->mp_id));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "1100"
list<CMonitor*>::iterator mt = pDataType->MonitorList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> MonitorList
while (mt != pDataType->MonitorList.end())
{
CMonitor* pMonitor = *mt++;
KafkaData.strText.append(QString(", \"%1\":{").arg("Value")); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CItem*>::iterator it = pMonitor->ItemList.begin(); //<2F>ܱ<EFBFBD><DCB1><EFBFBD> ItemList
list<CItem*>::iterator itEnd = pMonitor->ItemList.end(); //ItemList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (it != pMonitor->ItemList.end())
{
CItem* pItem = *it++;
if ("TIME" == pItem->strItemName) //<2F>޳<EFBFBD>"FLAG"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
time_sec = data->time / 1000; //ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>)
continue;
}
KafkaData.strText.append(QString("\"%1\":{").arg(pItem->strItemName)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F
list<CSequence*>::iterator sq = pItem->SequenceList.begin(); //<2F>ݱ<EFBFBD><DDB1><EFBFBD> SequenceList
list<CSequence*>::iterator sqEnd = pItem->SequenceList.end(); //SequenceList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (sq != pItem->SequenceList.end())
{
CSequence* pSequence = *sq++;
2025-04-29 15:05:36 +08:00
2025-02-14 16:44:38 +08:00
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
2025-01-16 16:17:01 +08:00
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
list<CDataValue*>::iterator dvEnd = pSequence->DataValueList.end(); //DataValueList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (dv != pSequence->DataValueList.end())
{
CDataValue* pDataValue = *dv++;
if ("NOT DEFINE" == pDataValue->strFullName || "not define" == pDataValue->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
continue;
if (!data->mms_str_map.contains(pDataValue->strFullName) && pDataValueBegin->strName == pDataValue->strName)//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
{
isJump = true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
break;
}
try
{
if (!pDataValue->bPlt) //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
{
double dTemp = data->mms_str_map.value(pDataValue->strFullName) * pDataValue->fCoefficient; //<2F>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> * ϵ<><CFB5>
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\", ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
}
else //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
{
if (0 == time_sec % 7200) //2Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
{
double dTemp = data->mms_str_map.value(pDataValue->strFullName) * pDataValue->fCoefficient; //<2F>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> * ϵ<><CFB5>
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\", ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>ǽǶ<C7BD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>ǽǶ<C7BD>ֵ)
}
}
}
catch (exception& e)
{
cout << "ʵʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //DataValueList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (sq != sqEnd) //<2F><>A<EFBFBD><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //SequenceList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (it != itEnd) //<2F><> V<><56>I<EFBFBD><49>PQ<50><51><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //ItemList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
} //MonitorList <20><><EFBFBD><EFBFBD>
if (isJump) continue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} //<2F><>-<2D><>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------------------------------
} //DataTypeList <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD> RTDATA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ("RTDATASOE" == pTopic->strTopic) //Topic<69><63><EFBFBD><EFBFBD>RTDATASOE----------------------------------------------------------
{
list<CDataType*>::iterator dt = pTopic->DataTypeList.begin(); //<2F>ڱ<EFBFBD><DAB1><EFBFBD> DataTypeList
while (dt != pTopic->DataTypeList.end())
{
int triggerCount = 0; //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
CDataType* pDataType = *dt++;
if (1 == pDataType->iDataType) //<2F><>-<2D><>SOE<4F><45>̬<EFBFBD>¼<EFBFBD>------------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "RTDATASOE"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\", ").arg(pDataType->iDataType)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString("\"%1\":[").arg(data->mp_id)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CEventData*>::iterator ed = pDataType->SOEList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> SOEList
list<CEventData*>::iterator edEnd = pDataType->SOEList.end(); //SOEListβԪ<CEB2><D4AA>
while (ed != pDataType->SOEList.end())
{
CEventData* pEventData = *ed++;
if ("NOT DEFINE" == pEventData->strFullName || "not define" == pEventData->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
continue;
if (!data->mms_str_map.contains(pEventData->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
continue;
try
{
double dTemp = data->mms_str_map.value(pEventData->strFullName);
if (dTemp >= 0.9) //SOE<4F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
{
if (0 == triggerCount) //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
{
KafkaData.strText.append(QString("\"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
triggerCount++; //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
}
else
KafkaData.strText.append(QString(", \"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
}
}
catch (exception& e)
{
cout << "SOE<EFBFBD><EFBFBD>̬<EFBFBD>¼<EFBFBD>ƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //SOEList <20><><EFBFBD><EFBFBD>
KafkaData.strText.append("]}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} //<2F><>-<2D><>SOE<4F><45>̬<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------
if (1 == pDataType->iDataType) //<2F><>-<2D><>SOE<4F><45>̬<EFBFBD>¼<EFBFBD>------------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "RTDATASOE"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\", ").arg(pDataType->iDataType)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString("\"%1\":[").arg(data->mp_id)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CEventData*>::iterator ed = pDataType->SOEList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> SOEList
list<CEventData*>::iterator edEnd = pDataType->SOEList.end(); //SOEListβԪ<CEB2><D4AA>
while (ed != pDataType->SOEList.end())
{
CEventData* pEventData = *ed++;
if ("NOT DEFINE" == pEventData->strFullName || "not define" == pEventData->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
continue;
if (!data->mms_str_map.contains(pEventData->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
continue;
try
{
double dTemp = data->mms_str_map.value(pEventData->strFullName);
if (dTemp >= 0.9) //SOE<4F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
{
if (0 == triggerCount) //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
{
KafkaData.strText.append(QString("\"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
triggerCount++; //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
}
else
KafkaData.strText.append(QString(", \"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
}
}
catch (exception& e)
{
cout << "SOE<EFBFBD><EFBFBD>̬<EFBFBD>¼<EFBFBD>ƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //SOEList <20><><EFBFBD><EFBFBD>
KafkaData.strText.append("]}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} //<2F><>-<2D><>SOE<4F><45>̬<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------
if (1 == pDataType->iDataType) //<2F><>-<2D><>SOE״̬<D7B4>¼<EFBFBD>------------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "RTDATASOE"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\", ").arg(pDataType->iDataType)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString("\"%1\":[").arg(data->mp_id)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CEventData*>::iterator ed = pDataType->SOEList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> SOEList
list<CEventData*>::iterator edEnd = pDataType->SOEList.end(); //SOEListβԪ<CEB2><D4AA>
while (ed != pDataType->SOEList.end())
{
CEventData* pEventData = *ed++;
if ("NOT DEFINE" == pEventData->strFullName || "not define" == pEventData->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
continue;
if (!data->mms_str_map.contains(pEventData->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
continue;
try
{
double dTemp = data->mms_str_map.value(pEventData->strFullName);
if (dTemp >= 0.9) //SOE<4F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
{
if (0 == triggerCount) //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
{
KafkaData.strText.append(QString("\"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
triggerCount++; //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
}
else
KafkaData.strText.append(QString(", \"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
}
}
catch (exception& e)
{
cout << "SOE״̬<EFBFBD>¼<EFBFBD>ƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //SOEList <20><><EFBFBD><EFBFBD>
KafkaData.strText.append("]}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} //<2F><>-<2D><>SOE״̬<D7B4>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------
} //DataTypeList <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD> RTDATASOE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} //TopicList <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (400 == data->func_type || 500 == data->func_type || 600 == data->func_type || 700 == data->func_type) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>> MMS_Recall
{
list<CTopic*>::iterator tp = ctopic_list.begin();
while (tp != ctopic_list.end()) //<2F>ٱ<EFBFBD><D9B1><EFBFBD> Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
CTopic* pTopic = *tp++;
if ("HISDATA" == pTopic->strTopic) //Topic<69><63><EFBFBD><EFBFBD>HISDATA----------------------------------------------------------
{
list<CDataType*>::iterator dt = pTopic->DataTypeList.begin(); //<2F>ڱ<EFBFBD><DAB1><EFBFBD> DataTypeList
while (dt != pTopic->DataTypeList.end())
{
bool isJump = false; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D1AD>
CDataType* pDataType = *dt++;
if (2 == pDataType->iDataType) //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>------------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "PST"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
long long time_sec; //ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>)
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\" ").arg(pDataType->iDataType, 2, 10, QChar('0'))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD> "02"
KafkaData.strText.append(QString(", \"Monitor\":\"%1\" ").arg(data->mp_id));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "1100"
list<CMonitor*>::iterator mt = pDataType->MonitorList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> MonitorList
int countflag = 0, num = 0;
while (mt != pDataType->MonitorList.end())
{
CMonitor* pMonitor = *mt++;
KafkaData.strText.append(QString(", \"%1\":{").arg("Value")); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CItem*>::iterator it = pMonitor->ItemList.begin(); //<2F>ܱ<EFBFBD><DCB1><EFBFBD> ItemList
list<CItem*>::iterator itEnd = pMonitor->ItemList.end(); //ItemList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (it != pMonitor->ItemList.end())
{
CItem* pItem = *it++;
if ("TIME" == pItem->strItemName) //<2F>޳<EFBFBD>"FLAG"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
time_sec = data->time / 1000; //ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>)
continue;
}
KafkaData.strText.append(QString("\"%1\":{").arg(pItem->strItemName)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F
list<CSequence*>::iterator sq = pItem->SequenceList.begin(); //<2F>ݱ<EFBFBD><DDB1><EFBFBD> SequenceList
list<CSequence*>::iterator sqEnd = pItem->SequenceList.end(); //SequenceList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (sq != pItem->SequenceList.end())
{
CSequence* pSequence = *sq++;
//KafkaData.strText.append(QString("{\"SEQ\":\"%1\", ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>
2025-02-14 16:44:38 +08:00
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
2025-01-16 16:17:01 +08:00
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
list<CDataValue*>::iterator dvEnd = pSequence->DataValueList.end(); //DataValueList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
num = num + pSequence->DataValueList.size();
while (dv != pSequence->DataValueList.end())
{
CDataValue* pDataValue = *dv++;
if ("NOT DEFINE" == pDataValue->strFullName || "not define" == pDataValue->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
{
countflag++;
continue;
}
if (!data->mms_str_map.contains(pDataValue->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
{
isJump = false; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
countflag++;
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":%2, ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
else
KafkaData.strText.append(QString("\"%1\":%2 ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
continue;
}
try
{
double dTemp = data->mms_str_map.value(pDataValue->strFullName) * pDataValue->fCoefficient; //<2F>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> * ϵ<><CFB5>
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\",").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
}
catch (exception& e)
{
cout << "<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //DataValueList <20><><EFBFBD><EFBFBD>
if (!KafkaData.strText.isEmpty()) {
if (KafkaData.strText[KafkaData.strText.length() - 1] == ',') {
KafkaData.strText = KafkaData.strText.remove(KafkaData.strText.size() - 1, 1);
KafkaData.strText.append(" ");
cout << "KafkaData.strText = KafkaData.strText.chopped(1) " << endl;
}
}
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (sq != sqEnd) //<2F><>A<EFBFBD><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //SequenceList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (it != itEnd) //<2F><> V<><56>I<EFBFBD><49>PQ<50><51><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //ItemList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
} //MonitorList <20><><EFBFBD><EFBFBD>
if (isJump) continue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
cout << countflag << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!send name=\"DATA_TYPE\" value=\"02\" " << num << endl;
cout << KafkaData.strText.toAscii().data() << endl;
if (countflag < num) {
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
shortjumpflag = true;
}
} //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------------------------------
//20241204<30><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>Ϊ3
if (3 == pDataType->iDataType) //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>------------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "PLT"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
long long time_sec; //ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>)
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\" ").arg(pDataType->iDataType, 2, 10, QChar('0'))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD> "02"
KafkaData.strText.append(QString(", \"Monitor\":\"%1\" ").arg(data->mp_id));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "1100"
list<CMonitor*>::iterator mt = pDataType->MonitorList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> MonitorList
int countflag = 0, num = 0;
while (mt != pDataType->MonitorList.end())
{
CMonitor* pMonitor = *mt++;
KafkaData.strText.append(QString(", \"%1\":{").arg("Value")); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CItem*>::iterator it = pMonitor->ItemList.begin(); //<2F>ܱ<EFBFBD><DCB1><EFBFBD> ItemList
list<CItem*>::iterator itEnd = pMonitor->ItemList.end(); //ItemList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (it != pMonitor->ItemList.end())
{
CItem* pItem = *it++;
if ("TIME" == pItem->strItemName) //<2F>޳<EFBFBD>"FLAG"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
time_sec = data->time / 1000; //ʱ<><CAB1><EFBFBD><EFBFBD>(<28><>)
continue;
}
KafkaData.strText.append(QString("\"%1\":{").arg(pItem->strItemName)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F
list<CSequence*>::iterator sq = pItem->SequenceList.begin(); //<2F>ݱ<EFBFBD><DDB1><EFBFBD> SequenceList
list<CSequence*>::iterator sqEnd = pItem->SequenceList.end(); //SequenceList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (sq != pItem->SequenceList.end())
{
CSequence* pSequence = *sq++;
//KafkaData.strText.append(QString("{\"SEQ\":\"%1\", ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>
2025-02-14 16:44:38 +08:00
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
2025-01-16 16:17:01 +08:00
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
list<CDataValue*>::iterator dvEnd = pSequence->DataValueList.end(); //DataValueList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
num = num + pSequence->DataValueList.size();
while (dv != pSequence->DataValueList.end())
{
CDataValue* pDataValue = *dv++;
if ("NOT DEFINE" == pDataValue->strFullName || "not define" == pDataValue->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
{
countflag++;
continue;
}
if (!data->mms_str_map.contains(pDataValue->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
{
isJump = false; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
countflag++;
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":%2, ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
else
KafkaData.strText.append(QString("\"%1\":%2 ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
continue;
}
try
{
if (0 == time_sec % 7200) //2Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
{
double dTemp = data->mms_str_map.value(pDataValue->strFullName) * pDataValue->fCoefficient; //<2F>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> * ϵ<><CFB5>
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\", ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
}
}
catch (exception& e)
{
cout << "<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //DataValueList <20><><EFBFBD><EFBFBD>
if (!KafkaData.strText.isEmpty()) {
if (KafkaData.strText[KafkaData.strText.length() - 1] == ',') {
KafkaData.strText = KafkaData.strText.remove(KafkaData.strText.size() - 1, 1);
KafkaData.strText.append(" ");
cout << "KafkaData.strText = KafkaData.strText.chopped(1) " << endl;
}
}
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (sq != sqEnd) //<2F><>A<EFBFBD><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //SequenceList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (it != itEnd) //<2F><> V<><56>I<EFBFBD><49>PQ<50><51><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //ItemList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
} //MonitorList <20><><EFBFBD><EFBFBD>
if (isJump) continue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
cout << countflag << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!send name=\"DATA_TYPE\" value=\"04\" " << num << endl;
cout << KafkaData.strText.toAscii().data() << endl;
if (countflag < num && 0 == time_sec % 7200) {
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
longjumpflag = true;
}
if (longjumpflag == true || shortjumpflag == true) {
return 1;
}
//return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------------------------------
if (1 == pDataType->iDataType) //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>-----------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "HISDATA"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\" ").arg(pDataType->iDataType, 2, 10, QChar('0'))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>̬ "01"
KafkaData.strText.append(QString(", \"Monitor\":\"%1\" ").arg(data->mp_id));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "1100"
list<CMonitor*>::iterator mt = pDataType->MonitorList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> MonitorList
while (mt != pDataType->MonitorList.end())
{
CMonitor* pMonitor = *mt++;
KafkaData.strText.append(QString(", \"%1\":{").arg("Value")); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CItem*>::iterator it = pMonitor->ItemList.begin(); //<2F>ܱ<EFBFBD><DCB1><EFBFBD> ItemList
list<CItem*>::iterator itEnd = pMonitor->ItemList.end(); //ItemList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (it != pMonitor->ItemList.end())
{
CItem* pItem = *it++;
if ("FLAG" == pItem->strItemName) //<2F>޳<EFBFBD>"FLAG"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"FLAG\":%1, ").arg(data->flag)); //ƴ<><C6B4> json<6F>޳<EFBFBD><DEB3><EFBFBD><EFBFBD>ǣ<EFBFBD>1<EFBFBD><31><EFBFBD>޳<EFBFBD><DEB3><EFBFBD>0<EFBFBD>޳<EFBFBD><DEB3><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>޳<EFBFBD>
continue;
}
if ("TIME" == pItem->strItemName) //<2F>޳<EFBFBD>"TIME"<22><><EFBFBD><EFBFBD>ֹsq<73><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>ָ<EFBFBD><D6B8>
{
KafkaData.strText.append(QString("\"TIME\":%1, ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
if (!data_timespan_list.contains(data->mp_id)) {
KafkaData.strText.append(QString("\"interval\":%1, ").arg(3)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
}
else if (data_timespan_list[data->mp_id]->msspan == 0)
{
KafkaData.strText.append(QString("\"interval\":%1, ").arg(3)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
}
else {
KafkaData.strText.append(QString("\"interval\":%1, ").arg(data_timespan_list[data->mp_id]->msspan)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>
}
continue;
}
KafkaData.strText.append(QString("\"%1\":{").arg(pItem->strItemName)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD> V<><56>I<EFBFBD><49>PQ
list<CSequence*>::iterator sq = pItem->SequenceList.begin(); //<2F>ݱ<EFBFBD><DDB1><EFBFBD> SequenceList
list<CSequence*>::iterator sqEnd = pItem->SequenceList.end(); //SequenceList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (sq != pItem->SequenceList.end())
{
CSequence* pSequence = *sq++;
//KafkaData.strText.append(QString("{\"SEQ\":\"%1\", ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
2025-02-14 16:44:38 +08:00
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
2025-01-16 16:17:01 +08:00
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
list<CDataValue*>::iterator dvEnd = pSequence->DataValueList.end(); //DataValueList<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
while (dv != pSequence->DataValueList.end())
{
CDataValue* pDataValue = *dv++;
if ("NOT DEFINE" == pDataValue->strFullName || "not define" == pDataValue->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
continue;
if (!data->mms_str_map.contains(pDataValue->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
{
isJump = false; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
//zw<7A>޸<EFBFBD> 2023-8-28 <20><>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":%2, ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
else
KafkaData.strText.append(QString("\"%1\":%2 ").arg(pDataValue->strName).arg("null")); //ƴ<><C6B4>
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
continue;
}
try
{
if (pDataValue->strFullName.indexOf("$ang$f") != -1) //<2F><><EFBFBD><EFBFBD>61850<35><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵĶ<C7B5><C4B6><EFBFBD>
{
double dAngleTemp = data->mms_str_map.value(pDataValue->strFullName); //<2F>Ƕ<EFBFBD>ֵ(-180<38><30> ~ 180<38><30>)
dAngleTemp = dAngleTemp > 180.0f ? dAngleTemp - 360.0f : dAngleTemp;
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\", ").arg(pDataValue->strName).arg(QString::number(dAngleTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dAngleTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>Ƕ<EFBFBD>ֵ)
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
}
else
{
double dTemp = data->mms_str_map.value(pDataValue->strFullName) * pDataValue->fCoefficient; //<2F>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD> * ϵ<><CFB5>
if (dv != dvEnd) //<2F>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԪ<D6B5><D4AA>
KafkaData.strText.append(QString("\"%1\":\"%2\", ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>ǽǶ<C7BD>ֵ)
else
KafkaData.strText.append(QString("\"%1\":\"%2\" ").arg(pDataValue->strName).arg(QString::number(dTemp, 10, 6))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ֵ(<28>ǽǶ<C7BD>ֵ)
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
}
}
catch (exception& e)
{
cout << "<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //DataValueList <20><><EFBFBD><EFBFBD>
if (!KafkaData.strText.isEmpty()) {
if (KafkaData.strText[KafkaData.strText.length() - 1] == ',') {
KafkaData.strText = KafkaData.strText.remove(KafkaData.strText.size() - 1, 1);
KafkaData.strText.append(" ");
cout << "KafkaData.strText = KafkaData.strText.chopped(1) " << endl;
}
}
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (sq != sqEnd) //<2F><>A<EFBFBD><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //SequenceList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (it != itEnd) //<2F><> V<><56>I<EFBFBD><49>PQ<50><51><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
KafkaData.strText.append("}, "); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
else
KafkaData.strText.append("}}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β
} //ItemList <20><><EFBFBD><EFBFBD>
if (isJump) break; //<2F><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
} //MonitorList <20><><EFBFBD><EFBFBD>
if (isJump) continue; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} //<2F><>-<2D><><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------------------------------
} //DataTypeList <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD> HISDATA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ("RTDATASOE" == pTopic->strTopic) //Topic<69><63><EFBFBD><EFBFBD>RTDATASOE----------------------------------------------------------
{
list<CDataType*>::iterator dt = pTopic->DataTypeList.begin(); //<2F>ڱ<EFBFBD><DAB1><EFBFBD> DataTypeList
while (dt != pTopic->DataTypeList.end())
{
int triggerCount = 0; //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
CDataType* pDataType = *dt++;
if (1 == pDataType->iDataType) //<2F><>-<2D><>SOE<4F><45>̬<EFBFBD>¼<EFBFBD>------------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "RTDATASOE"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\", ").arg(pDataType->iDataType)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString("\"%1\":[").arg(data->mp_id)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CEventData*>::iterator ed = pDataType->SOEList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> SOEList
list<CEventData*>::iterator edEnd = pDataType->SOEList.end(); //SOEListβԪ<CEB2><D4AA>
while (ed != pDataType->SOEList.end())
{
CEventData* pEventData = *ed++;
if ("NOT DEFINE" == pEventData->strFullName || "not define" == pEventData->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
continue;
if (!data->mms_str_map.contains(pEventData->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
continue;
try
{
double dTemp = data->mms_str_map.value(pEventData->strFullName);
if (dTemp >= 0.9) //SOE<4F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
{
if (0 == triggerCount) //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
{
KafkaData.strText.append(QString("\"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
triggerCount++; //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
}
else
KafkaData.strText.append(QString(", \"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
}
}
catch (exception& e)
{
cout << "SOE<EFBFBD><EFBFBD>̬<EFBFBD>¼<EFBFBD>ƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //SOEList <20><><EFBFBD><EFBFBD>
KafkaData.strText.append("]}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} //<2F><>-<2D><>SOE<4F><45>̬<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------
if (1 == pDataType->iDataType) //<2F><>-<2D><>SOE<4F><45>̬<EFBFBD>¼<EFBFBD>------------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "RTDATASOE"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\", ").arg(pDataType->iDataType)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString("\"%1\":[").arg(data->mp_id)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CEventData*>::iterator ed = pDataType->SOEList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> SOEList
list<CEventData*>::iterator edEnd = pDataType->SOEList.end(); //SOEListβԪ<CEB2><D4AA>
while (ed != pDataType->SOEList.end())
{
CEventData* pEventData = *ed++;
if ("NOT DEFINE" == pEventData->strFullName || "not define" == pEventData->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
continue;
if (!data->mms_str_map.contains(pEventData->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
continue;
try
{
double dTemp = data->mms_str_map.value(pEventData->strFullName);
if (dTemp >= 0.9) //SOE<4F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
{
if (0 == triggerCount) //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
{
KafkaData.strText.append(QString("\"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
triggerCount++; //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
}
else
KafkaData.strText.append(QString(", \"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
}
}
catch (exception& e)
{
cout << "SOE<EFBFBD><EFBFBD>̬<EFBFBD>¼<EFBFBD>ƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //SOEList <20><><EFBFBD><EFBFBD>
KafkaData.strText.append("]}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} //<2F><>-<2D><>SOE<4F><45>̬<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------
if (1 == pDataType->iDataType) //<2F><>-<2D><>SOE״̬<D7B4>¼<EFBFBD>------------------------------------------------------------
{
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = data->monitorId; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
KafkaData.mp_id = data->mp_id;
KafkaData.strTopic = "RTDATASOE"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText = ""; //kafka<6B><61><EFBFBD>͵<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append(QString("\"DATA_TYPE\":\"%1\", ").arg(pDataType->iDataType)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString("\"TIME\":\"%1\", ").arg(data->time)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString("\"%1\":[").arg(data->mp_id)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CEventData*>::iterator ed = pDataType->SOEList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> SOEList
list<CEventData*>::iterator edEnd = pDataType->SOEList.end(); //SOEListβԪ<CEB2><D4AA>
while (ed != pDataType->SOEList.end())
{
CEventData* pEventData = *ed++;
if ("NOT DEFINE" == pEventData->strFullName || "not define" == pEventData->strFullName) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD> $ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
continue;
if (!data->mms_str_map.contains(pEventData->strFullName))//ȷ<><C8B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFB2BB><EFBFBD>и<EFBFBD>key
continue;
try
{
double dTemp = data->mms_str_map.value(pEventData->strFullName);
if (dTemp >= 0.9) //SOE<4F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
{
if (0 == triggerCount) //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
{
KafkaData.strText.append(QString("\"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
triggerCount++; //SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
}
else
KafkaData.strText.append(QString(", \"%1\" ").arg(pEventData->triggerFlag)); //ƴ<><C6B4> json SOE<4F><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
}
}
catch (exception& e)
{
cout << "SOE״̬<EFBFBD>¼<EFBFBD>ƴ<EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>: " << e.what() << endl;
return false;
}
} //SOEList <20><><EFBFBD><EFBFBD>
KafkaData.strText.append("]}"); //ƴ<><C6B4> json<6F><6E>̬<EFBFBD><CCAC><EFBFBD>ݽ<EFBFBD>β
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
} //<2F><>-<2D><>SOE״̬<D7B4>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------
} //DataTypeList <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD> RTDATASOE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} //TopicList <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return 1;
}
2025-02-14 16:44:38 +08:00
2025-01-16 16:17:01 +08:00
void processGGIO_start_data_end(char* mp_id,char* fullname,double v,long long time,char* devtype,int monitor_id)
{
XmlConfig c_xmlcfg;
if (xmlinfo_list.contains(devtype)) {
c_xmlcfg = xmlinfo_list[devtype]->xmlcfg;
}
else {
c_xmlcfg = xmlcfg;
}
QString Full_name;
Full_name.append(fullname);
Ckafka_data_t KafkaData; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.monitor_id = monitor_id;
KafkaData.mp_id = mp_id;
KafkaData.strTopic = "Alm"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
KafkaData.strText.append("\"DATA_TYPE\":\"05\", "); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString("\"Monitor\":\"%1\", ").arg(mp_id)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString("\"Value\":{")); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString("\"FLAG\":%1,").arg(1)); //ƴ<><C6B4> <20>޳<EFBFBD><DEB3><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString("\"TIME\":%1,").arg(time)); //ƴ<><C6B4> ʱ<><CAB1>
KafkaData.strText.append(QString("\"SOE\":[")); //ƴ<><C6B4> SOE
list<CEventData*>::iterator ed = c_xmlcfg.SOEList.begin(); //<2F>۱<EFBFBD><DBB1><EFBFBD> SOEList
while (ed != c_xmlcfg.SOEList.end())
{
CEventData* pEventData = *ed++;
if (pEventData->strFullName.indexOf(Full_name) != -1)
{
KafkaData.strText.append(QString("\"%1\"").arg(pEventData->triggerFlag));
break;
}
}
KafkaData.strText.append(QString("]")); //ƴ<><C6B4> SOE<4F><45><EFBFBD><EFBFBD>
KafkaData.strText.append("}"); //ƴ<><C6B4> value<75><65><EFBFBD><EFBFBD>
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>
printf("transfer json ggio data: %s==%s \n", KafkaData.strText.toStdString().c_str(), fullname);
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(KafkaData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
}
//zw<7A>޸<EFBFBD> 2023-8-31 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>list<73><74><EFBFBD><EFBFBD> д<><D0B4>xml<6D><6C><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>Ϣ ģ<>ͱ<EFBFBD><CDB1><EFBFBD> <20>ն<EFBFBD><D5B6>ͺ<EFBFBD> <20>ն˳<D5B6><CBB3><EFBFBD> oss<73>洢·<E6B4A2><C2B7> ʱ<><CAB1>
//lnk<6E>޸<EFBFBD> 2024-10-28 ȥ<><C8A5><EFBFBD>ն˳<D5B6><CBB3>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ģ<EFBFBD><C4A3><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
//void Set_xml_databaseinfo(char* MODEL_ID, char* TMNL_TYPE, char* TMNL_FACTORY, char* FILE_NAME, int year, int month, int day, int hour, int minute, int second)
void Set_xml_databaseinfo(char* MODEL_ID, char* TMNL_TYPE, char* FILE_PATH, char* FILE_NAME, int year, int month, int day, int hour, int minute, int second)
{
if (MODEL_ID == NULL || TMNL_TYPE == NULL || FILE_PATH == NULL || FILE_NAME == NULL)
{
cout << "Function Set_xml_databaseinfo Error!" << endl;
return;
}
cout << "Function Set_xml_databaseinfo Start!" << endl;
QString id, type, filepath, name;
id.append(MODEL_ID);
type.append(TMNL_TYPE);
filepath.append(FILE_PATH);
name.append(FILE_NAME);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125
cout << "setxmldatabase:" << TMNL_TYPE << endl;
2025-02-08 17:04:39 +08:00
if (!xmlinfo_list.contains(type))//<2F><><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>û<EFBFBD>
2025-01-16 16:17:01 +08:00
{
2025-01-17 17:10:18 +08:00
Xmldata* config = new Xmldata(); //û<>ҵ<EFBFBD><D2B5>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ն<EFBFBD><D5B6><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>б<EFBFBD><D0B1><EFBFBD>
2025-01-16 16:17:01 +08:00
xmlinfo_list.insert(type, config);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125
cout << "xmlinfo_list insert type:" << type.toStdString() << endl;
}
2025-02-08 17:04:39 +08:00
else//<2F><EFBFBD>͸<EFBFBD><CDB8>¸<EFBFBD><C2B8><EFBFBD>
2025-01-16 16:17:01 +08:00
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125
cout << "xmlinfo_list type contain:" << type.toStdString() << endl;
QDateTime time(QDate(year, month, day), QTime(hour, minute, second));
2025-01-17 17:10:18 +08:00
if (xmlinfo_list[type]->xmlbase.datetime == time) { //<2F>ն<EFBFBD><D5B6>ͺŸ<CDBA><C5B8>±<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺŴ<CDBA><C5B4>󣬵<EFBFBD><F3A3ACB5><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>õ<EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߸<EFBFBD><DFB8><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD><EFBFBD><E2A1A3><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ͺź<CDBA>ӳ<EFBFBD><D3B3><EFBFBD>ļ<EFBFBD>ʱҪע<D2AA><D7A2>
xmlinfo_list[type]->updataflag = false; //ʱ<><CAB1>ֵһ<D6B5><D2BB>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>û<EFBFBD>и<EFBFBD><D0B8>£<EFBFBD><C2A3><EFBFBD>ǰҵ<C7B0><D2B5><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ζ<EFBFBD><CEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-01-16 16:17:01 +08:00
}
else {
xmlinfo_list[type]->updataflag = true;
}
2025-02-08 17:04:39 +08:00
//lnk20250208<30><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
2025-01-16 16:17:01 +08:00
}
2025-02-08 17:04:39 +08:00
//lnk20250208<30><38><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>Ǹ<EFBFBD><C7B8>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD>׷<EFBFBD><D7B7>
//xmlinfo_list[type]->xmlbase.MODEL_ID.append(id);
//xmlinfo_list[type]->xmlbase.TMNL_TYPE.append(type);
//xmlinfo_list[type]->xmlbase.FILE_PATH.append(filepath);
//xmlinfo_list[type]->xmlbase.FILE_NAME.append(name);
xmlinfo_list[type]->xmlbase.MODEL_ID = id;
xmlinfo_list[type]->xmlbase.TMNL_TYPE = type;
xmlinfo_list[type]->xmlbase.FILE_PATH = filepath;
xmlinfo_list[type]->xmlbase.FILE_NAME = name;
2025-01-16 16:17:01 +08:00
QDateTime time(QDate(year, month, day), QTime(hour, minute, second));
xmlinfo_list[type]->xmlbase.datetime = time;
2025-02-14 16:44:38 +08:00
cout << "##################################isdelta_flag is " << isdelta_flag << endl;
/*lnk2024-8-14 <20><><EFBFBD><EFBFBD>isdelta_flag ѡ<><D1A1>xmllist*/
if (isdelta_flag) {
cout << "xmllist2 create" << endl;
if (!xmlinfo_list2.contains(type))
{
Xmldata* config2 = new Xmldata();
xmlinfo_list2.insert(type, config2);
}
else
{
QDateTime time(QDate(year, month, day), QTime(hour, minute, second));
if (xmlinfo_list2[type]->xmlbase.datetime == time) {
xmlinfo_list2[type]->updataflag = false;
}
else {
xmlinfo_list2[type]->updataflag = true;
}
}
xmlinfo_list2[type]->xmlbase.MODEL_ID = id;
xmlinfo_list2[type]->xmlbase.TMNL_TYPE = type;
xmlinfo_list2[type]->xmlbase.FILE_PATH = filepath;
xmlinfo_list2[type]->xmlbase.FILE_NAME = name;
xmlinfo_list2[type]->xmlbase.datetime = time;
}
/*lnk2024-8-14*/
2025-01-16 16:17:01 +08:00
char file_name[256];
memset(file_name, 0, 256);
sprintf(file_name, "%s", FILE_NAME);
QString Qsavename;
Qsavename.append("/FeProject/dat/").append(id).append(".xml"); //<2F><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>·<EFBFBD><C2B7>
char save_name[256];
memset(save_name, 0, 256);
sprintf(save_name, "%s", Qsavename.toAscii().data());
cout << file_name << "!!!!!!!!!!!!!!!!!!!!!!!!!!" << save_name << endl;
//20241028 lnk <20>滻Ϊ<E6BBBB>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>web<65>ӿ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ؽӿڲ<D3BF><DAB2><EFBFBD>
//<2F>ӿ<EFBFBD>ʾ<EFBFBD><CABE>http://192.168.1.125:10215/file/download?filePath=/path/xxx.txt
// <20><><EFBFBD><EFBFBD>web<65><62>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
char* fileContent = NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//char downpath[128] = {"/home/pq/FeProject/src/pt61850netd_pqfe_lnk/download/123.txt"};
//char download[128] = {"{\"filename\":\"file_test.txt\"}"};
//SendJsonAPI_web("http://192.168.1.149:8091/file/download", "", download, &fileContent);
std::string fullPath = std::string("filePath=") + std::string(FILE_PATH);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "fullpath" << fullPath << std::endl;
SendJsonAPI_web(WEB_FILEDOWNLOAD, fullPath.c_str(), "", &fileContent);
if (fileContent != NULL) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
//<2F><><EFBFBD><EFBFBD>
//std::ofstream outFile(downpath, std::ios::binary);//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƶķ<C6B5>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
std::ofstream outFile(save_name, std::ios::out);//<2F>ı<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
if (outFile.is_open()) {
// <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ļ<EFBFBD>
outFile.write(fileContent, strlen(fileContent));
outFile.close();
std::cout << "File saved successfully!" << std::endl;
} else {
std::cerr << "Error: Unable to open file for writing." << std::endl;
}
// <20>ͷŷ<CDB7><C5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
free(fileContent);
} else {
std::cerr << "Error: Unable to download file." << std::endl;
}
}
//zw<7A>޸<EFBFBD> 2023-9-4 <20><>ȡװ<C8A1><D7B0><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD>Ӧ<EFBFBD><D3A6>xml<6D>ļ<EFBFBD>
void Set_xml_nodeinfo()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD>Ӧxml<6D>ļ<EFBFBD>ʱ<EFBFBD><CAB1>Ĭ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!inited) //<2F><>ʼ<EFBFBD><CABC> JiangSu_Config.xml
{
QString path;
path.append("not define");
2025-02-14 16:44:38 +08:00
ParseXMLConfig2(0, &xmlcfg, &topicList, path); //<2F><><EFBFBD><EFBFBD> ParseXMLConfig() <20><><EFBFBD><EFBFBD>JiangSu_Config.xml<6D><6C><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
if (isdelta_flag) {
ParseXMLConfig2(1, &xmlcfg2, &topicList2, path); //lnk2024-8-13<31><33><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
}
2025-01-16 16:17:01 +08:00
inited = true;
}
if (xmlinfo_list.size() != 0)
{
cout << "!!!!!!!!!! xmlinfo_list.size() != 0 !!!!!!!!!!!" << endl;
for (QMap<QString, Xmldata*>::iterator it2 = xmlinfo_list.begin(); it2 != xmlinfo_list.end(); ++it2)
{
QString key2 = it2.key();
Xmldata* value2 = it2.value();
if (value2->updataflag == true) {
2025-02-14 16:44:38 +08:00
ParseXMLConfig2(0,&(value2->xmlcfg), &(value2->topicList), value2->xmlbase.MODEL_ID);
}
}
//lnk2024-8-14 ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
if (isdelta_flag) {
for (QMap<QString, Xmldata*>::iterator it3 = xmlinfo_list2.begin(); it3 != xmlinfo_list2.end(); ++it3)
{
QString key3 = it3.key();
Xmldata* value3 = it3.value(); //
if (value3->updataflag == true) {
ParseXMLConfig2(1, &(value3->xmlcfg), &(value3->topicList), value3->xmlbase.MODEL_ID);
}
2025-01-16 16:17:01 +08:00
}
}
}
else {
cout << "!!!!!!!!!! xmlinfo_list.size() == 0 !!!!!!!!!!!" << endl;
}
}
//zw<7A>޸<EFBFBD> 2023-9-4 <20><>ȡxml·<6C><C2B7>
char* Get_xmlpath(char* devtype)
{
QString type;
type.append(devtype);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125
std::cout << type.toStdString() << std::endl;
2025-03-13 16:35:19 +08:00
if (xmlinfo_list.contains(devtype) &&
xmlinfo_list[devtype] != NULL && // <20>ȼ<EFBFBD><C8BC><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
!xmlinfo_list[devtype]->xmlbase.MODEL_ID.isNull() && // ȷ<><C8B7> QString <20><><EFBFBD><EFBFBD> NULL
!xmlinfo_list[devtype]->xmlbase.MODEL_ID.isEmpty() && // ȷ<><C8B7><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
xmlinfo_list[devtype]->xmlbase.MODEL_ID.trimmed().length() >= 4) { //ȷ<><C8B7>modelid<69><64><EFBFBD><EFBFBD>lnk20250313
2025-01-16 16:17:01 +08:00
cout << "!!!!!!!!!! xmlinfo_list.contains(devtype) == 1 !!!!!!!!!!!" << endl;
2025-03-13 16:35:19 +08:00
QByteArray byteArray = xmlinfo_list[devtype]->xmlbase.MODEL_ID.toLocal8Bit();//<2F>ױ<EFBFBD><D7B1><EFBFBD><EFBFBD><EFBFBD>,һ<><D2BB>Ҫȷ<D2AA><C8B7>modelid<69><64><EFBFBD><EFBFBD>lnk20250313
2025-03-05 17:47:47 +08:00
char* charArray = new char[byteArray.size()+1];//<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ʱ+1<><31>ֹ<EFBFBD>ڴ<EFBFBD>й©lnk20250305
2025-01-16 16:17:01 +08:00
memcpy(charArray, byteArray.data(), byteArray.size());
charArray[byteArray.size()] = '\0';
return charArray;
}
else {
cout << "!!!!!!!!!! xmlinfo_list.contains(devtype) == 0 !!!!!!!!!!!" << endl;
return NULL;
}
}
//zw<7A>޸<EFBFBD> 2023-9-5 <20><>ȡIEDģ<44><C4A3>
char* Get_IED(char* devtype)
{
QString type;
type.append(devtype);
2025-03-13 16:35:19 +08:00
if (xmlinfo_list.contains(type) && xmlinfo_list[type] != NULL) {
2025-02-08 17:04:39 +08:00
cout << "!!!!!!!!!! Get_IED xmlinfo_list.contains(devtype) == 1 !!!!!!!!!!!" << endl;
2025-03-13 16:35:19 +08:00
// ȷ<><C8B7> xmlcfg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>ǿ<EFBFBD>
if (xmlinfo_list[type]->xmlcfg.IEDname.isNull() || xmlinfo_list[type]->xmlcfg.LDevicePrefix.isNull()) {
cout << "Error: IEDname or LDevicePrefix is NULL in Get_IED!" << endl;
return NULL;
}
2025-01-16 16:17:01 +08:00
QString ied;
2025-03-13 16:35:19 +08:00
ied.append(xmlinfo_list[type]->xmlcfg.IEDname); // PQMonitor
ied.append(xmlinfo_list[type]->xmlcfg.LDevicePrefix);
2025-01-16 16:17:01 +08:00
ied.append("%d");
2025-03-13 16:35:19 +08:00
2025-01-16 16:17:01 +08:00
QByteArray byteArray = ied.toLocal8Bit();
2025-03-13 16:35:19 +08:00
if (byteArray.isEmpty()) {
cout << "Error: Generated QByteArray is empty!" << endl;
return NULL;
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ڴ棬ȷ<E6A3AC><C8B7><EFBFBD><EFBFBD><E3B9BB>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
char* charArray = new char[byteArray.size() + 1];
if (!charArray) {
cout << "Error: Memory allocation failed!" << endl;
return NULL;
}
2025-01-16 16:17:01 +08:00
memcpy(charArray, byteArray.data(), byteArray.size());
2025-03-13 16:35:19 +08:00
charArray[byteArray.size()] = '\0'; // ȷ<><C8B7><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD> '\0' <20><>β
2025-01-16 16:17:01 +08:00
return charArray;
2025-03-13 16:35:19 +08:00
}
2025-01-16 16:17:01 +08:00
else {
2025-02-08 17:04:39 +08:00
cout << "!!!!!!!!!! Get_IED xmlinfo_list.contains(devtype) == 0 !!!!!!!!!!!" << endl;
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
QString ied;
ied.append(xmlcfg.IEDname);
ied.append(xmlcfg.LDevicePrefix);
ied.append("%d");
QByteArray byteArray = ied.toLocal8Bit();
2025-03-05 17:47:47 +08:00
char* charArray = new char[byteArray.size()+1];//<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ʱ+1<><31>ֹ<EFBFBD>ڴ<EFBFBD>й©lnk20250305
2025-01-16 16:17:01 +08:00
memcpy(charArray, byteArray.data(), byteArray.size());
charArray[byteArray.size()] = '\0';
return charArray;
}
}
char* Get_LDevice(char* devtype)
{
QString type;
type.append(devtype);
2025-03-13 16:35:19 +08:00
if (xmlinfo_list.contains(type) && xmlinfo_list[type] != NULL) { // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD>Ҳ<EFBFBD>Ϊ<EFBFBD><CEAA>
if (xmlinfo_list[type]->xmlcfg.LDevicePrefix.isNull() || xmlinfo_list[type]->xmlcfg.LDevicePrefix.isEmpty()) {
cout << "Error: LDevicePrefix is NULL or empty in Get_IED!" << endl;
return NULL;
}
2025-01-16 16:17:01 +08:00
QString ied;
2025-03-13 16:35:19 +08:00
ied.append(xmlinfo_list[type]->xmlcfg.LDevicePrefix); // ʹ<>ý<EFBFBD><C3BD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ն<EFBFBD>ǰ׺
2025-01-16 16:17:01 +08:00
ied.append("%d");
2025-03-13 16:35:19 +08:00
2025-01-16 16:17:01 +08:00
QByteArray byteArray = ied.toLocal8Bit();
2025-03-13 16:35:19 +08:00
if (byteArray.isEmpty()) {
cout << "Error: Generated QByteArray is empty!" << endl;
return NULL;
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ڴ棬ȷ<E6A3AC><C8B7><EFBFBD><EFBFBD><E3B9BB>С
char* charArray = new char[byteArray.size() + 1];
if (!charArray) {
cout << "Error: Memory allocation failed!" << endl;
return NULL;
}
2025-01-16 16:17:01 +08:00
memcpy(charArray, byteArray.data(), byteArray.size());
2025-03-13 16:35:19 +08:00
charArray[byteArray.size()] = '\0'; // ȷ<><C8B7><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD> '\0' <20><>β
2025-01-16 16:17:01 +08:00
return charArray;
}
else {
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
QString ied;
ied.append(xmlcfg.LDevicePrefix);//ʹ<><CAB9>Ĭ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ն<EFBFBD>ǰ׺
ied.append("%d");
QByteArray byteArray = ied.toLocal8Bit();
2025-03-05 17:47:47 +08:00
char* charArray = new char[byteArray.size()+1];//<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ʱ+1<><31>ֹ<EFBFBD>ڴ<EFBFBD>й©lnk20250305
2025-01-16 16:17:01 +08:00
memcpy(charArray, byteArray.data(), byteArray.size());
charArray[byteArray.size()] = '\0';
return charArray;
}
}
///////////////////////////////////////////////////lnk2024-10-21////////////////////////////////////////////////////////
void handleCommentResponse(const std::string& response) {
// <20><><EFBFBD><EFBFBD> JSON <20><>Ӧ
cJSON* json_data = cJSON_Parse(response.c_str());
if (json_data == NULL) {
std::cerr << "Error parsing response: " << cJSON_GetErrorPtr() << std::endl;
return;
}
// <20><>ȡ<EFBFBD>ֶ<EFBFBD>
cJSON* codeItem = cJSON_GetObjectItem(json_data, "code");
cJSON* msgItem = cJSON_GetObjectItem(json_data, "msg");
cJSON* dataItem = cJSON_GetObjectItem(json_data, "data");
if (codeItem) {
std::string code = codeItem->valuestring;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
std::cout << "Response Code: " << code << std::endl;
std::string msg = (msgItem != NULL) ? msgItem->valuestring : "not found";
std::cout << "Message: " << msg << std::endl;
} else {
std::cerr << "Error: Missing expected fields in JSON response." << std::endl;
}
// <20>ͷ<EFBFBD> JSON <20><><EFBFBD><EFBFBD>
cJSON_Delete(json_data);
}
std::string boolToString(bool value) {
return value ? "1" : "0";
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ρ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>״̬lnk202411-4
void connectlog_pgsql(char* id,char* datetime,int status)
{
2025-04-29 15:05:36 +08:00
2025-01-16 16:17:01 +08:00
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
char* ptr=NULL;
// <20><><EFBFBD><EFBFBD> JSON <20><><EFBFBD><EFBFBD>
cJSON* jsonObject = cJSON_CreateObject();
if (jsonObject == NULL) {
std::cerr << "Failed to create JSON object." << std::endl;
return;
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ֶε<D6B6> JSON <20><><EFBFBD><EFBFBD>
cJSON* id_item = cJSON_CreateString(id);
if (!id_item) {
std::cerr << "Failed to create 'id' string." << std::endl;
cJSON_Delete(jsonObject);
return;
}
cJSON_AddItemToObject(jsonObject, "id", id_item);
cJSON* datetime_item = cJSON_CreateString(datetime);
if (!datetime_item) {
std::cerr << "Failed to create 'Datetime' string." << std::endl;
cJSON_Delete(jsonObject);
return;
}
2025-03-12 14:33:55 +08:00
cJSON_AddItemToObject(jsonObject, "date", datetime_item);
2025-01-16 16:17:01 +08:00
char statusStr[12]; // <20><EFBFBD><E3B9BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> '\0'<27><>
sprintf(statusStr, "%d", status);// ʹ<><CAB9> sprintf <20><> int ת<><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
cJSON* status_item = cJSON_CreateString(statusStr);
if (!status_item) {
std::cerr << "Failed to create 'status' string." << std::endl;
cJSON_Delete(jsonObject);
return;
}
cJSON_AddItemToObject(jsonObject, "status", status_item);
char* jsonString = cJSON_Print(jsonObject);
if (jsonString == NULL) {
std::cerr << "Failed to print JSON object." << std::endl;
cJSON_Delete(jsonObject);
return;
}
2025-03-12 11:45:53 +08:00
//ʹ<><CAB9>mq
Ckafka_data_t connect_info;
connect_info.strTopic = QString::fromStdString(G_CONNECT_TOPIC);
connect_info.strText = QString::fromStdString(std::string(jsonString));
2025-01-16 16:17:01 +08:00
2025-03-12 11:45:53 +08:00
if(g_node_id == STAT_DATA_BASE_NODE_ID){//<2F><>̬<EFBFBD><CCAC><EFBFBD>ϴ<EFBFBD>
kafka_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
kafka_data_list.append(connect_info); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
}
2025-01-16 16:17:01 +08:00
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
cJSON_Delete(jsonObject);
free(jsonString); // cJSON_PrintUnformattedʹ<64><CAB9>malloc<6F><63><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
}
//lnk202411-5 <20><>̬<EFBFBD><CCAC><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>ʹ<EFBFBD><CAB9>kafka<6B><61><EFBFBD>ͣ<EFBFBD><CDA3>ij<EFBFBD>http<74>ӿ<EFBFBD>
2025-04-02 11:48:18 +08:00
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<2F><>̬<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// *****************************************************************************************
// <20><>ȡָ<C8A1><D6B8>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ϣ(<28>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A1A2>С)<29><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>ܴ<EFBFBD>С
struct FileInfo {
std::string fileName;
time_t modTime; // <20>ϴ<EFBFBD><CFB4>޸<EFBFBD>ʱ<EFBFBD><CAB1>
long long fileSize; // <20>ļ<EFBFBD><C4BC><EFBFBD>С
};
// ɨ<><C9A8>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ϣ
static void getDirectoryFilesInfo(const std::string &dirPath, std::vector<FileInfo> &fileList)
{
DIR* dp = opendir(dirPath.c_str());
if (!dp) {
std::cerr << "Failed to get info from : " << dirPath << std::endl;
return; // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
}
struct dirent* entry = NULL;
while ((entry = readdir(dp)) != NULL) {
// <20><><EFBFBD><EFBFBD> . <20><> ..
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue;
}
// ƴ<><C6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
std::string fullPath = dirPath + entry->d_name;
// <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
struct stat st;
if (stat(fullPath.c_str(), &st) == 0) {
if (S_ISREG(st.st_mode)) {
FileInfo fi;
fi.fileName = fullPath; // <20><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
fi.modTime = st.st_mtime; // <20>޸<EFBFBD>ʱ<EFBFBD><CAB1>
fi.fileSize = (long long)st.st_size; // <20>ļ<EFBFBD><C4BC><EFBFBD>С
fileList.push_back(fi);
}
}
}
closedir(dp);
}
// <20><> JSON <20>ַ<EFBFBD><D6B7><EFBFBD>д<EFBFBD><D0B4>ָ<EFBFBD><D6B8><EFBFBD>ļ<EFBFBD>
// ע<><D7A2><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ŀ<EFBFBD>пɼӸ<C9BC><D3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void writeJsonToFile(const char* filePath, const char* jsonString)
{
FILE* fp = fopen(filePath, "w");
if (!fp) {
std::cerr << "Failed to write in file : " << filePath << std::endl;
return;
}
fprintf(fp, "%s", jsonString);
fclose(fp);
}
// <20><><EFBFBD><EFBFBD> qvvr Ŀ¼<C4BF><C2BC><EFBFBD>ļ<EFBFBD><C4BC>ܴ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10M <20><>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>
// ע<><EFBFBD><E2A3BA><EFBFBD>߼<EFBFBD><DFBC>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻɾһ<C9BE><D2BB><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>ɾ<EFBFBD><C9BE>С<EFBFBD><D0A1>10M
static void checkAndRemoveOldestIfNeeded(const std::string &dirPath, long long maxBytes)
{
// 1) <20>ж<EFBFBD>Ŀ¼<C4BF>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
{
struct stat st;
// <20><><EFBFBD><EFBFBD> stat() <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if (stat(dirPath.c_str(), &st) == -1) {
if (errno == ENOENT) {
// Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
// ע<>⣺mkdir ֻ<><EFBFBD><E1B4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ݹ鴴<DDB9><E9B4B4><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ
if (mkdir(dirPath.c_str(), 0777) != 0) {
// <20><> mkdir ʧ<>ܣ<EFBFBD><DCA3>ɸ<EFBFBD><C9B8><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cerr << "Failed to create directory: " << dirPath << std::endl;
return; // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
} else {
// stat() <20><><EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ENOENT<4E><54><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cerr << "stat error: " << strerror(errno) << std::endl;
return;
}
}
else {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> stat <20><> dirPath<74><68><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ļ<EFBFBD>
if (!S_ISDIR(st.st_mode)) {
// <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ķ<EFBFBD>Ŀ¼<C4BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD>ΪĿ¼ʹ<C2BC><CAB9>
std::cerr << dirPath << " exists but is not a directory." << std::endl;
return;
}
}
}
// ============== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>е<EFBFBD><D0B5>߼<EFBFBD> ==============
// <20><>ȡĿ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
std::vector<FileInfo> fileList;
getDirectoryFilesInfo(dirPath, fileList);
// <20><><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD>С
long long totalSize = 0;
for (size_t i = 0; i < fileList.size(); ++i) {
totalSize += fileList[i].fileSize;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Ǹ<EFBFBD>
if (totalSize > maxBytes && !fileList.empty()) {
// <20><><EFBFBD>޸<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>޸<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>
std::sort(fileList.begin(), fileList.end(),
// C++98 <20>ıȽ<C4B1>д<EFBFBD><D0B4>
static_cast<bool(*)(const FileInfo&, const FileInfo&)>(
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>lambda<64><61><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ָ<EFBFBD><D6B8>
// <20>ȽϺ<C8BD><CFBA><EFBFBD>
(bool (*)(const FileInfo&, const FileInfo&))[] (const FileInfo &a, const FileInfo &b) {
return a.modTime < b.modTime;
}
)
);
// ɾ<><C9BE><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>(<28><><EFBFBD>ϵ<EFBFBD><CFB5>ļ<EFBFBD>)
remove(fileList[0].fileName.c_str());
}
}
// ɨ<><C9A8>Ŀ¼<C4BF>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳɹ<CDB3><C9B9><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void scanAndResendOfflineFiles(const std::string &dirPath)
{
// <20><>ȡĿ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
std::vector<FileInfo> fileList;
2025-04-02 15:16:11 +08:00
std::cout << "getDirectoryFilesInfo" << std::endl;
2025-04-02 11:48:18 +08:00
getDirectoryFilesInfo(dirPath, fileList);
2025-04-02 15:16:11 +08:00
std::cout << "send every file" << std::endl;
2025-04-02 11:48:18 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>
for (size_t i = 0; i < fileList.size(); ++i) {
// <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD> JSON)
FILE* fp = fopen(fileList[i].fileName.c_str(), "r");
if (!fp) {
std::cerr << " fail to open exsist file " << fileList[i].fileName << std::endl;
continue;
}
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڴ<EFBFBD>
std::string jsonContent;
char buf[1024];
while (!feof(fp)) {
if (fgets(buf, sizeof(buf), fp)) {
jsonContent += buf;
}
}
fclose(fp);
2025-04-02 15:16:11 +08:00
std::cout << "send jsonContent" << jsonContent << std::endl;
2025-04-02 11:48:18 +08:00
// <20><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>
char* ptr = NULL; // <20><><EFBFBD>շ<EFBFBD><D5B7><EFBFBD>
2025-04-02 15:16:11 +08:00
SendJsonAPI_web(WEB_EVENT, "", jsonContent.c_str(), &ptr);
2025-04-02 11:48:18 +08:00
if (ptr != NULL) {
2025-04-02 15:16:11 +08:00
cJSON* j_r = cJSON_Parse(ptr);
if (j_r == NULL) {
std::cout << "old file send fail" << std::endl;
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>Ҫ<EFBFBD>ɼӸ<C9BC><D3B8><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>ж<EFBFBD>
handleCommentResponse(std::string(ptr));
}
else{
std::cout << "old file send success,remove it" << std::endl;
// ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
remove(fileList[i].fileName.c_str());
free(j_r);
}
2025-04-02 11:48:18 +08:00
}
else {
// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>
2025-04-02 15:16:11 +08:00
std::cout << "old file send fail" << std::endl;
2025-04-02 11:48:18 +08:00
}
2025-04-02 15:16:11 +08:00
free(ptr);
2025-04-02 11:48:18 +08:00
}
}
// *****************************************************************************************
2025-04-02 15:16:11 +08:00
std::string FormatTimeForFilename(const std::string& timeStr) {
std::string result;
for (char c : timeStr) {
if (isdigit(c)) {
result += c;
}
}
return result;
}
2025-04-02 11:48:18 +08:00
// ======================== ԭ<>ȵĺ<C8B5><C4BA><EFBFBD> ========================
int transfer_json_qvvr_data(unsigned int func_type, int monitor_id,
double mag, double dur, long long start_tm, long long end_tm, int dis_kind,
char* uuid_cfg,char* uuid_dat,
char* mp_id,char* Qvvr_rptname,char* devtype)
{
// ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κθĶ<CEB8>
// ---------------------------------------------------------------
XmlConfig c_xmlcfg;
if (xmlinfo_list.contains(devtype)) {
c_xmlcfg = xmlinfo_list[devtype]->xmlcfg;//<2F><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>
}
else {
c_xmlcfg = xmlcfg;
}
if (strlen(mp_id) == 0) {
std::cout << "mp_id is null" << std::endl;
return 0;
}
cJSON* root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "monitorId", mp_id);
cJSON_AddNumberToObject(root, "amplitude", mag);
cJSON_AddNumberToObject(root, "duration", dur);
cJSON_AddNumberToObject(root, "eventType", dis_kind);
char start_time_str[25];
time_t start_sec = start_tm / 1000;
struct tm* time_info = localtime(&start_sec);
strftime(start_time_str, sizeof(start_time_str), "%Y-%m-%d %H:%M:%S", time_info);
snprintf(start_time_str + strlen(start_time_str), sizeof(start_time_str) - strlen(start_time_str), ".%03lld", start_tm % 1000);
cJSON_AddStringToObject(root, "startTime", start_time_str);
// cJSON_AddStringToObject(root, "wavePathcfg", uuid_cfg);
// cJSON_AddStringToObject(root, "wavePathdat", uuid_dat);
cJSON_AddStringToObject(root, "wavePath", uuid_dat);
if (c_xmlcfg.WavePhasicFlag == "1") {
QString Qvvr_Rptname;
Qvvr_Rptname.append(Qvvr_rptname);
if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicA) != -1) {
cJSON_AddStringToObject(root, "phase", "A");
}
else if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicB) != -1) {
cJSON_AddStringToObject(root, "phase", "B");
}
else if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicC) != -1) {
cJSON_AddStringToObject(root, "phase", "C");
}
else {
cJSON_AddStringToObject(root, "phase", "unknow");
}
}
else {
cJSON_AddStringToObject(root, "phase", "unknow");
}
char* json_string = cJSON_Print(root);
printf("%s\n", json_string); // <20><><EFBFBD><EFBFBD> JSON <20>ַ<EFBFBD><D6B7><EFBFBD>
// <20><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>̬<EFBFBD>ӿ<EFBFBD>
char* ptr = NULL;
SendJsonAPI_web(WEB_EVENT, "", json_string, &ptr);
// ================ <20><><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD><C2B9><EFBFBD> =========================
// ********** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ʼ **********
2025-04-02 15:16:11 +08:00
if(ptr != NULL)
2025-04-02 11:48:18 +08:00
{
2025-04-02 15:16:11 +08:00
cJSON* j_r = cJSON_Parse(ptr);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>(j_r == NULL)<29><><EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD>ǰ json <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Ŀ¼(/FeProject/dat/qvvr/)
if (j_r == NULL) {
std::cout << "qvvr send fail ,store in local" << std::endl;
2025-04-02 11:48:18 +08:00
// 1) <20>ȼ<EFBFBD><C8BC><EFBFBD>/FeProject/dat/qvvr/Ŀ¼<C4BF>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD>Ƿ񳬹<C7B7> 10M<30><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>
std::string qvvrDir = "/FeProject/dat/qvvr/";
checkAndRemoveOldestIfNeeded(qvvrDir, 10LL * 1024 * 1024);
// 2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> json <20><>Ϊ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>: mp_id-start_time_str-dis_kind.txt
// <20><><EFBFBD>磺 502-2025-04-02 15:25:30.123-3.txt (<28><>ʾ<EFBFBD><CABE>)
std::string fileName = qvvrDir;
fileName += mp_id;
fileName += "-";
2025-04-02 15:16:11 +08:00
fileName += FormatTimeForFilename(start_time_str);
2025-04-02 11:48:18 +08:00
fileName += "-";
char buf[64];
sprintf(buf, "%d", dis_kind);
fileName += buf;
fileName += ".txt";
// <20><> json_string д<><D0B4><EFBFBD>ļ<EFBFBD>
2025-04-02 15:16:11 +08:00
writeJsonToFile(fileName.c_str(), json_string);
2025-04-02 11:48:18 +08:00
}
2025-04-02 15:16:11 +08:00
else{
free(j_r);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
2025-04-02 11:48:18 +08:00
}
2025-04-02 15:16:11 +08:00
// <20><><EFBFBD>۴˴η<CBB4><CEB7>ͳɹ<CDB3><C9B9><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>Ҫɨ<D2AA><C9A8>/FeProject/dat/qvvr/Ŀ¼<C4BF>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>
if(1)
{
std::string qvvrDir = "/FeProject/dat/qvvr/";
scanAndResendOfflineFiles(qvvrDir);
}
2025-04-02 11:48:18 +08:00
// ********** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD> **********
2025-04-02 15:16:11 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>η<EFBFBD><CEB7><EFBFBD>
2025-04-02 11:48:18 +08:00
if (ptr != NULL) {
2025-04-02 15:16:11 +08:00
std::cout << "current qvvr handle response" << std::endl;
2025-04-02 11:48:18 +08:00
handleCommentResponse(std::string(ptr));
free(ptr);
} else {
// <20><><EFBFBD><EFBFBD> ptr Ϊ NULL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::cout << "Error: Received NULL response" << std::endl;
2025-04-02 15:16:11 +08:00
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
cJSON_Delete(root);
free(json_string);
2025-04-02 11:48:18 +08:00
return 0;
}
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
cJSON_Delete(root);
free(json_string);
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<2F><>̬<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
2025-01-16 16:17:01 +08:00
void qvvr_test()
{
char uuid_cfg[] = {"/comtrade/"};
char uuid_dat[] = {"/comtrade/"};
char mp_id[] = {"000cf2a27f3f13f330b9e8690641e7f2"};
char Qvvr_rptname[] = {"unknow"};
char devtype[] = {"01"};
transfer_json_qvvr_data(1, 123456789, 220, 180, 1730894400.123, 1730894580, 1210001,uuid_cfg,uuid_dat,mp_id,Qvvr_rptname,devtype);
}
void comflag_test()
{
char id[] = {"000cf2a27f3f13f330b9e8690641e7f2"};
char datetime[] = {"2024-11-6 15:15:15"};
connectlog_pgsql(id,datetime,1);
}
///////////////////////////////////////////////////lnk2024-10-21////////////////////////////////////////////////////////
void clearXmlConfigAndTopicList(Xmldata* data) {
// <20><><EFBFBD><EFBFBD> XmlConfig
data->xmlcfg = XmlConfig(); // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> xmlcfg
// <20><><EFBFBD><EFBFBD> topicList
list<CTopic*>::iterator it;
for (it = data->topicList.begin(); it != data->topicList.end(); ++it) {
delete *it; // <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
}
data->topicList.clear(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//4-<2D><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>ļ<EFBFBD>//////////////////////////////
2025-01-17 17:10:18 +08:00
void Set_xml_nodeinfo_one(char* dev_type)
{
bool ret = false;
if(xmlinfo_list[QString::fromUtf8(dev_type)] != NULL){ //ԭ<><D4AD><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ľڵ<C4BD>
if(xmlinfo_list[QString::fromUtf8(dev_type)]->updataflag == true){ //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>xmlcfg<66><67>topicListɾ<74><C9BE>
clearXmlConfigAndTopicList(xmlinfo_list[QString::fromUtf8(dev_type)]);
2025-02-14 16:44:38 +08:00
ret = ParseXMLConfig2(0,&(xmlinfo_list[QString::fromUtf8(dev_type)]->xmlcfg), &(xmlinfo_list[QString::fromUtf8(dev_type)]->topicList), xmlinfo_list[QString::fromUtf8(dev_type)]->xmlbase.MODEL_ID);
if(!ret)
{
std::cout << "!!!! this ledger xml config fail!!!!" << std::endl;
}
2025-01-17 17:10:18 +08:00
}
2025-01-17 17:10:18 +08:00
}
else{
std::cout << "xmlinfo_list not contain this devtype" << std::endl;
}
2025-02-14 16:44:38 +08:00
//<2F><><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD>
if(isdelta_flag){
if(xmlinfo_list2[QString::fromUtf8(dev_type)] != NULL){ //ԭ<><D4AD><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ľڵ<C4BD>
if(xmlinfo_list2[QString::fromUtf8(dev_type)]->updataflag == true){ //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
2025-01-17 17:10:18 +08:00
2025-02-14 16:44:38 +08:00
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>xmlcfg<66><67>topicListɾ<74><C9BE>
clearXmlConfigAndTopicList(xmlinfo_list2[QString::fromUtf8(dev_type)]);
ret = ParseXMLConfig2(1,&(xmlinfo_list2[QString::fromUtf8(dev_type)]->xmlcfg), &(xmlinfo_list2[QString::fromUtf8(dev_type)]->topicList), xmlinfo_list2[QString::fromUtf8(dev_type)]->xmlbase.MODEL_ID);
if(!ret)
{
std::cout << "!!!! this ledger xml config fail!!!!" << std::endl;
}
}
}
else{
std::cout << "xmlinfo_list2 not contain this devtype" << std::endl;
}
}
2025-01-17 17:10:18 +08:00
}
2025-04-29 15:05:36 +08:00