Files
microser/json/create_json.cpp

3574 lines
155 KiB
C++
Raw Permalink 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>
//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;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
using namespace std;
extern int parse_commerror_write(const std::vector<std::string>& codes);
extern int parse_commstatus_write(const std::vector<std::string>& codes);
extern int parse_match_write(const std::vector<std::string>& codes);
extern int parse_dataintegrity_write(const std::vector<std::string>& codes);
extern int parse_rationality_write(const std::vector<std::string>& codes);
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;
//<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>
//extern QMutex kafka_data_list_mutex; //Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//extern QList<kafka_data_t> kafka_data_list; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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>
//-------------------------------------------------------------------------------------*/
//////////////////////////////////////WW 2023-08-22 start
QMutex Sql_data_list_mutex; //Sqlִ<6C><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QList<QString> Sql_data_list; //Sqlִ<6C><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//////////////////////////////////////WW 2023-08-22 end
//QMap<int, QMap<QString, MP_RATIONALITY*> > error_data_list;//zw<7A>޸<EFBFBD> 2023 - 8 - 22 <20>‰<EFBFBD><C289><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>¼map
//QMap<int, QMap<QString, QDateTime> > error_datamatch_list;//zw<7A>޸<EFBFBD> 2023-8-28 <20><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>ֶμ<D6B6>¼map
QMap<QString,Mn_Timespan*> data_timespan_list;//zw<7A>޸<EFBFBD> 2023 - 8 - 29 <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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>
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>
int inited = false; //JiangSu_Config.xml<6D>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʶ
///////////////////////////////////////////////lnk20241021<32>滻web<65>ӿ<EFBFBD>//////////////////////////////////
void connectlog_pgsql(char* id,char* datetime,int status);
void errorlog_pgsql(char* id, QString time, QString filename);
void SoeRptSql(char* id, int state,char* rpt);
QString errorlog_num_pgsql(QString monitorId, QString datatime, QString filename, int count);
QString errorlog_dataintegrity_pgsql(QString time, QString datatime,QString monitorId,bool recallflag);
QString errorlog_datamatch_pgsql(QString id, QString time, int BASE_MAT_NUM,int ADV_MAT_NUM,int BASE_ACT_NUM,int ADV_ACT_NUM,QString filename);
#if 0
void connectlog_pgsql(char* id)
{
QString pgsql;
pgsql.append(QString("insert into \"%1\".\"%2meas_pq_comm_status_tr\"(\"terminal_id\",\"statistical_date\",\"comm_status\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
pgsql.append(QString("values('%1',date'%2',1) ").arg(id).arg(QDateTime::currentDateTime().toString("yyyyMMdd")));
pgsql.append(QString("on conflict(\"terminal_id\",\"statistical_date\") do update set "));
pgsql.append(QString("\"comm_status\"= \"%1\".\"%2meas_pq_comm_status_tr\".\"comm_status\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(pgsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
//cout << pgsql.toAscii().data() << endl;
}
//zw<7A>޸<EFBFBD> 2023 - 8 - 24 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD> pgsql<71><6C>װ<EFBFBD><D7B0><EFBFBD><EFBFBD> <20>ն<EFBFBD>id <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
void errorlog_pgsql(char* id, QString time, QString filename)
{
QString pgsql;//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>pgsql<71><6C><EFBFBD><EFBFBD>
pgsql.append(QString("insert into \"%1\".\"%2meas_pq_comm_error_tr\"(\"terminal_id\",\"statistical_date\",\"comm_status\",\"file_name\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
pgsql.append(QString("values('%1',date'%2',1,'%3') ").arg(id).arg(time).arg(filename));
pgsql.append(QString("on conflict(\"terminal_id\",\"statistical_date\") do update set "));
pgsql.append(QString("\"comm_status\"= \"%1\".\"%2meas_pq_comm_error_tr\".\"comm_status\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(pgsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!" << pgsql.toAscii().data() << endl;
}
//zw<7A>޸<EFBFBD> 20240115 <20><><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
void SoeRptSql(char* id, int state,char* rpt)
{
QDateTime savetime = QDateTime::currentDateTime();
QString pgsql;//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>pgsql<71><6C><EFBFBD><EFBFBD>
pgsql.append(QString("insert into \"%1\".\"%2meas_pq_comm_error_tr\"(\"terminal_id\",\"statistical_date\",\"comm_status\",\"file_name\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
pgsql.append(QString("values('%1',date'%2',%3,'%4') ").arg(id).arg(savetime.toString("yyyyMMdd")).arg(state).arg(rpt));
pgsql.append(QString("on conflict(\"terminal_id\",\"statistical_date\",\"file_name\") do update set "));
pgsql.append(QString("\"comm_status\"= %1;").arg(state));
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(pgsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
}
#endif
//zw<7A>޸<EFBFBD> 2023 - 8 - 18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD> json<6F><6E>װ<EFBFBD><D7B0><EFBFBD><EFBFBD> <20>ն<EFBFBD>id <20>ն<EFBFBD>ip <20>ն˶˿<CBB6> <20><>־<EFBFBD><D6BE>Դ <20><EFBFBD><ECB3A3><EFBFBD><EFBFBD>
void errorlog_json(char* id,char* ip,int port,int type,char* error_type,char* ERROR_DES,char* ERROR_PARAM)
{
if (id == NULL || ip == NULL || port == NULL || type == NULL || error_type == NULL) {
cout << "Function errorlog_json Error!" << endl;
}
QString json;//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>json<6F><6E>־
json.append("{");
json.append(QString("\"TERMINAL_ID\": \"%1\",").arg(id));//װ<><D7B0>ID
json.append(QString("\"COMM_TIME\": \"%1\",").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")));//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
json.append(QString("\"TMNL_IP\": \"%1\",").arg(ip));//<2F>ն<EFBFBD>IP
json.append(QString("\"TMNL_PORT\": \"%1\",").arg(port));//<2F>ն˶˿ں<CBBF>
json.append(QString("\"COMM_TYPE\": \"%1\",").arg(type));//<2F><>־<EFBFBD><D6BE>Դ
json.append(QString("\"ERROR_TYPE\": \"%1\",").arg(error_type));//<2F><EFBFBD><ECB3A3><EFBFBD><EFBFBD>
json.append(QString("\"ERROR_DES\": \"%1\",").arg(ERROR_DES));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
json.append(QString("\"ERROR_PARAM\": \"%1\"").arg(ERROR_PARAM));//<2F>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>
json.append("}");
cout << json.toAscii().data() << endl;
QDateTime savetime = QDateTime::currentDateTime();
QString Qfilename, Qsavename;
Qfilename.append("comtrade/").append(id).append("/").append(savetime.toString("yyyyMMdd")).append("/").append(savetime.toString("yyyyMMddhhmmss")).append("_COMM.log");
Qsavename.append("/FeProject/dat/").append(id).append("_").append(savetime.toString("yyyyMMddhhmmss")).append("_COMM.log");
char file_name[256];
memset(file_name, 0, 256);
sprintf(file_name, "%s", Qfilename.toAscii().data());
char save_name[256];
memset(save_name, 0, 256);
sprintf(save_name, "%s", Qsavename.toAscii().data());
//cout << file_name << "!!!!!!!!!!!!!!!!!!!!!!!!!!" << save_name << endl;
oss_data_t OssData;
OssData.filename = file_name;
OssData.savename = save_name;
OssData.data = json;
OssData.id = QString(id);
OssData.time = savetime.toString("yyyyMMdd"); //ʱ<><CAB1>
OssData.log_name = "comm";
oss_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
oss_data_list.append(OssData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
oss_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
//std::ofstream file(save_name); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣬴<EFBFBD><F3A3ACB4><EFBFBD><EFBFBD>ļ<EFBFBD> example.txt
//if (file.is_open()) { // <20>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
// file << json.toAscii().data() << "\n";
// file.close(); // <20>ر<EFBFBD><D8B1>ļ<EFBFBD>
//}
//else {
// std::cerr << "Unable to open file\n";
//}
//PutOSS(file_name, save_name);
//std::remove(save_name);
//errorlog_pgsql(id, savetime.toString("yyyyMMdd"), Qfilename);
}
//zw<7A>޸<EFBFBD> 2023 - 8 - 23 <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5>ֵ <20><>ѹ<EFBFBD>ȼ<EFBFBD> <20>洢map
void errorlog_num(CDataValue* pDataValue, double value, double UL, QMap<QString, MP_RATIONALITY*> *map_list,long long time)
{
if(pDataValue == NULL)
{
cout << "Function errorlog_num Error!" <<endl;
return;
}
//cout << pDataValue->LimitUp.toAscii().data() << pDataValue->LimitDown.toAscii().data() << endl;
if (pDataValue->LimitUp != "not define" && pDataValue->LimitDown != "not define" && UL != 0)//zw<7A>޸<EFBFBD> 2023-8-23 <20><><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
{
double limitup = 0, limitdown = 0;
if (pDataValue->LimitUp.indexOf("*%UN") != -1)
{
QString tmp = pDataValue->LimitUp;
float temp = tmp.replace("*%UN", "").toFloat();
limitup = temp * UL;
}
else if (pDataValue->LimitUp.indexOf("*%U") != -1)
{
QString tmp = pDataValue->LimitUp;
float temp = tmp.replace("*%U", "").toFloat();
limitup = (temp * UL) / 1.732f;
}
else
{
limitup = pDataValue->LimitUp.toFloat();
}
if (pDataValue->LimitDown.indexOf("*%UN") != -1)
{
QString tmp = pDataValue->LimitDown;
float temp = tmp.replace("*%UN", "").toFloat();
limitdown = temp * UL;
}
else if (pDataValue->LimitDown.indexOf("*%U") != -1)
{
QString tmp = pDataValue->LimitDown;
float temp = tmp.replace("*%U", "").toFloat();
limitdown = (temp * UL) / 1.732f;
}
else
{
limitdown = pDataValue->LimitDown.toFloat();
}
//cout << limitdown << "||||" << limitup << "||||" << UL << endl;
if (pDataValue->LimitUp != "0" || pDataValue->LimitDown != "0")
{
if (value < limitdown || value >limitup)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
{
if (!map_list->contains(pDataValue->strFullName))
{
MP_RATIONALITY* tmp_data = new MP_RATIONALITY();
tmp_data->fValue = value;
tmp_data->over_time = 0;
tmp_data->dtvalue = QDateTime::fromTime_t(time / 1000);
map_list->insert(pDataValue->strFullName, tmp_data);
}
map_list->value(pDataValue->strFullName)->over_time++;
}
}
}
}
//zw<7A>޸<EFBFBD> 2023 - 8 - 23 <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><EFBFBD><ECB3A3>ֵת<D6B5><D7AA>json<6F><6E>pgsql
QString errorlog_num_json(QString monitorId, QMap<QString, MP_RATIONALITY*> map_list)
{
int count = 0;
QString log_json;//<2F><><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
QMap<QString, MP_RATIONALITY*> tmp = map_list;
for (QMap<QString, MP_RATIONALITY*>::iterator it2 = tmp.begin(); it2 != tmp.end(); ++it2)
{
count++;
QString key2 = it2.key();
MP_RATIONALITY* value2 = it2.value();
log_json.append("{");
log_json.append(QString("\"strFullName\":\"%1\", ").arg(key2));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵȫ<D6B5><C8AB>
log_json.append(QString("\"value\":\"%1\", ").arg(value2->fValue));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
log_json.append(QString("\"datetime\":\"%1\"").arg(value2->dtvalue.toString("yyyy-MM-dd hh:mm:ss")));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
log_json.append("}");
}
return log_json;
}
///////////////////////////////////////////////lnk20241021<32>滻web<65>ӿ<EFBFBD>//////////////////////////////////
#if 0
//2023 9-18 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pgsql<71><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString errorlog_num_pgsql(QString monitorId, QString datatime, QString filename, int count)
{
QString log_pqsql;//<2F><><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD>pgsql<71><6C><EFBFBD><EFBFBD>
log_pqsql.append(QString("insert into \"%1\".\"%2meas_pq_measpoint_rationality_tr\"(\"monitor_id\",\"statistical_date\",\"irrat_num\",\"file_name\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
log_pqsql.append(QString("values('%1',date'%2',%3,'%4') ").arg(monitorId).arg(datatime).arg(count).arg(filename));
log_pqsql.append(QString("on conflict(\"monitor_id\",\"statistical_date\") do nothing;"));
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(log_pqsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return log_pqsql;
}
//zw<7A>޸<EFBFBD> 2023 - 8 - 24 <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><><EFBFBD><EFBFBD>pgsql<71><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ն<EFBFBD>id <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2023-08-15 <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>2023-08-15 19:15:00
QString errorlog_dataintegrity_pgsql(QString time, QString datatime,QString monitorId,bool recallflag)
{
int num = 480;
if (data_timespan_list[monitorId]->msspan != 0) {
num = 1440 / data_timespan_list[monitorId]->msspan;
}
QString pgsql;//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>pgsql<71><6C><EFBFBD><EFBFBD>
pgsql.append(QString("insert into \"%1\".\"%2meas_pq_measpoint_intact_tr\"(\"monitor_id\",\"statistical_date\",\"exp_num\",\"act_num\",\"value_time\",\"last_value_time\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
pgsql.append(QString("values('%1',date'%2',480,1,array[TIMESTAMP'%3'],'%4') ").arg(monitorId).arg(time).arg(datatime).arg(datatime));
pgsql.append(QString("on conflict(\"monitor_id\",\"statistical_date\") do update set "));
//pgsql.append(QString("\"value_time\"=(array_cat(EXCLUDED.\"value_time\", \"%1\".\"%2meas_pq_measpoint_intact_tr\".\"value_time\"))[:1440] , \"exp_num\" = %3 , \"last_value_time\" = EXCLUDED.\"last_value_time\" ,\"act_num\"= \"%4\".\"%5meas_pq_measpoint_intact_tr\".\"act_num\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX).arg(num).arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
if (recallflag == true) {
if (data_timespan_list[monitorId]->msspan != 0) {
pgsql.append(QString("\"value_time\"= ARRAY_APPEND(\"%1\".\"%2meas_pq_measpoint_intact_tr\".\"value_time\", '%3') , \"exp_num\" = %4 , \"last_value_time\" = EXCLUDED.\"last_value_time\" ,\"act_num\"= \"%5\".\"%6meas_pq_measpoint_intact_tr\".\"act_num\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX).arg(datatime).arg(num).arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
}
else {
pgsql.append(QString("\"value_time\"= ARRAY_APPEND(\"%1\".\"%2meas_pq_measpoint_intact_tr\".\"value_time\", '%3') , \"last_value_time\" = EXCLUDED.\"last_value_time\" ,\"act_num\"= \"%4\".\"%5meas_pq_measpoint_intact_tr\".\"act_num\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX).arg(datatime).arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
}
}
else {
pgsql.append(QString("\"value_time\"= ARRAY_APPEND(\"%1\".\"%2meas_pq_measpoint_intact_tr\".\"value_time\", '%3') , \"exp_num\" = %4 , \"last_value_time\" = EXCLUDED.\"last_value_time\" ,\"act_num\"= \"%5\".\"%6meas_pq_measpoint_intact_tr\".\"act_num\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX).arg(datatime).arg(num).arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
}
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(pgsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return pgsql;
}
#endif
//zw<7A>޸<EFBFBD> 2023-8-24 <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
void errorlog_dataintegrity_timespanlist(QString monitorId,long long time)
{
if (!data_timespan_list.contains(monitorId))//zw<7A>޸<EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
Mn_Timespan* mn_tmp = new Mn_Timespan();
mn_tmp->timespan.append(time);
data_timespan_list.insert(monitorId, mn_tmp);
}
else
{
if (data_timespan_list[monitorId]->timespan.count() <= 8) {
data_timespan_list[monitorId]->timespan.append(time);
}
}
}
//zw<7A>޸<EFBFBD> 2023-8-24 <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void errorlog_dataintegrity_timespanlist_2(QString monitorId)
{
if (data_timespan_list[monitorId]->msspan == 0 && data_timespan_list[monitorId]->timespan.count() >= 8) //<2F><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
int count[10] = {0,0,0,0,0,0,0,0,0,0};
int tmp_sp = 0;
qSort(data_timespan_list[monitorId]->timespan.begin(), data_timespan_list[monitorId]->timespan.end());
for (int i = 1; i < data_timespan_list[monitorId]->timespan.size(); i++) {
int tmp_ms = data_timespan_list[monitorId]->timespan[i] - data_timespan_list[monitorId]->timespan[i - 1];
if (tmp_ms >= 30000 && tmp_ms <= 90000) {
count[0]++;
}
else if (tmp_ms >= 90000 && tmp_ms <= 150000) {
count[1]++;
}
else if (tmp_ms >= 150000 && tmp_ms <= 210000) {
count[2]++;
}
else if (tmp_ms >= 210000 && tmp_ms <= 270000) {
count[3]++;
}
else if (tmp_ms >= 270000 && tmp_ms <= 330000) {
count[4]++;
}
else if (tmp_ms >= 330000 && tmp_ms <= 390000) {
count[5]++;
}
else if (tmp_ms >= 390000 && tmp_ms <= 450000) {
count[6]++;
}
else if (tmp_ms >= 450000 && tmp_ms <= 510000) {
count[7]++;
}
else if (tmp_ms >= 510000 && tmp_ms <= 570000) {
count[8]++;
}
else if (tmp_ms >= 570000 && tmp_ms <= 630000) {
count[9]++;
}
}
for (int i = 0; i < 10; i++) {
if (count[i] != 0 && count[i] > tmp_sp) {
tmp_sp = count[i];
data_timespan_list[monitorId]->msspan = i+1;
}
}
}
}
//zw<7A>޸<EFBFBD> 2023 - 8 - 28 <20><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD> map<61><70>¼ <20><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB> <20>洢map
void errorlog_datamatch(QString fullname, QMap<QString, QDateTime> *map_list)
{
if(!map_list->contains(fullname))
{
map_list->insert(fullname, QDateTime::currentDateTime());
}
}
///////////////////////////////////////////////lnk20241021<32>滻web<65>ӿ<EFBFBD>//////////////////////////////////
#if 0
//zw<7A>޸<EFBFBD> 2023 - 8 - 25 <20><>ֵƥ<D6B5><C6A5><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><><EFBFBD><EFBFBD>pgsql<71><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ն<EFBFBD>id <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2023-08-15 <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
QString errorlog_datamatch_pgsql(QString id, QString time, int BASE_MAT_NUM,int ADV_MAT_NUM,int BASE_ACT_NUM,int ADV_ACT_NUM,QString filename)
{
QString pgsql;//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>pgsql<71><6C><EFBFBD><EFBFBD>
pgsql.append(QString("insert into \"%1\".\"%2meas_pq_measpoint_match_tr\"(\"monitor_id\",\"statistical_date\",\"base_mat_num\",\"adv_mat_num\",\"base_act_num\",\"adv_act_num\",\"file_name\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
pgsql.append(QString("values('%1',date'%2',%3,%4,%5,%6,'%7') ").arg(id).arg(time).arg(BASE_MAT_NUM).arg(ADV_MAT_NUM).arg(BASE_ACT_NUM).arg(ADV_ACT_NUM).arg(filename));
pgsql.append(QString("on conflict(\"monitor_id\",\"statistical_date\") do nothing;"));
//pgsql.append(QString("\"BASE_ACT_NUM\"= %1 , \"ADV_ACT_NUM\"= %2;").arg(BASE_ACT_NUM).arg(ADV_ACT_NUM));
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(pgsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return pgsql;
}
#endif
//zw<7A>޸<EFBFBD> 2023-8-29 <20><>ֵƥ<D6B5><C6A5><EFBFBD><EFBFBD>json<6F><6E>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
QString errorlog_datamatch_json(QMap<QString, QDateTime> data_match_map_1, QMap<QString, QDateTime> data_match_map_2,long long time)
{
QString log_json,fullnamelist;//<2F><><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD>json<6F>ַ<EFBFBD><D6B7><EFBFBD>
if (data_match_map_1.count() != 0) {
for (QMap<QString, QDateTime>::iterator it2 = data_match_map_1.begin(); it2 != data_match_map_1.end(); ++it2) {
QString key2 = it2.key();
QDateTime value2 = it2.value();
fullnamelist.append("\"");
fullnamelist.append(key2);//<2F><>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>ֵȫ<D6B5><C8AB>
fullnamelist.append("\",");
}
}
if (data_match_map_2.count() != 0) {
for (QMap<QString, QDateTime>::iterator it2 = data_match_map_2.begin(); it2 != data_match_map_2.end(); ++it2) {
QString key2 = it2.key();
QDateTime value2 = it2.value();
fullnamelist.append("\"");
fullnamelist.append(key2);//<2F><>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>ֵȫ<D6B5><C8AB>
fullnamelist.append("\",");
}
}
fullnamelist.chop(1);
log_json.append(QString("{ \"datetime\": \"%1\",").arg(QDateTime::fromTime_t(time / 1000).toString("yyyy-MM-dd hh:mm:ss")));
log_json.append(QString(" \"LackDataName\": [%1] ").arg(fullnamelist));
log_json.append("}");
return log_json;
}
bool ParseXMLConfig2(XmlConfig *cfg, list<CTopic*> *ctopiclist,QString path) //<2F><><EFBFBD><EFBFBD>JiangSu_Config.xml<6D><6C><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
{
//cfg = new XmlConfig();
//ע<><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)
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>
if ("7" == strPhase) //<2F><>-<2D>ٶ<EFBFBD>ȡABC<42><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
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>
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>)-------------------------------------
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
//cout << dv1->strName.toAscii().data() << "--" << dv1->DA.toAscii().data() << " (" << dv1->iOffset << endl;
//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>
//continue; //ABC<42><43><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ󣬼<C9BA><F3A3ACBC><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>һ<EFBFBD>ڵ<EFBFBD>
}
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>
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";
//cout << ed->triggerFlag.toAscii().data() << "=====" << ed->strFullName.toAscii().data() << endl;
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>
{
//cout << "ReportMap" << endl;
}
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"));
//cout << xmlcfg->WaveTimeFlag.toAscii().data() << endl;
}
if ("IED" == strTag)
{
cfg->IEDname.append(e.attribute("name"));
//cout << xmlcfg->IEDname.toAscii().data() << endl;
}
if ("LDevice" == strTag)
{
cfg->LDevicePrefix.append(e.attribute("Prefix"));
//cout<<xmlcfg->LDevicePrefix.toAscii().data() <<endl;
}
}
} //<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;
}
}
int transfer_json_block_data(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>
{
list<CTopic*> ctopic_list;
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 {
cout << "transfer_json_block_data not contain data->dev_type" << endl;
ctopic_list = topicList;
}
//list<CTopic*>* tmp;
bool shortjumpflag = false;
bool longjumpflag = false;
//zw<7A>޸<EFBFBD> 2023-8-28 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
//bool data_match_flag = false, data_integrity_flag = true, data_reason_flag = false;//ƥ<><C6A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>־<EFBFBD><D6BE>¼<EFBFBD><C2BC>־
QMap<QString, MP_RATIONALITY*> data_reason_map;//<2F><><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD>map
QMap<QString, QDateTime> data_match_map_1;//<2F><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>map <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QMap<QString, QDateTime> data_match_map_2;//<2F><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>map <20>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//zw<7A>޸<EFBFBD> end
if (!inited) //<2F><>ʼ<EFBFBD><CABC> JiangSu_Config.xml
{
//ParseXMLConfig(); //<2F><><EFBFBD><EFBFBD> ParseXMLConfig() <20><><EFBFBD><EFBFBD>JiangSu_Config.xml<6D><6C><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
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++;
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
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>
if (pDataValue->BaseFlag == "1") {
errorlog_datamatch(pDataValue->strFullName, &data_match_map_1);
}
else {
errorlog_datamatch(pDataValue->strFullName, &data_match_map_2);
}
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>ֵ)
//zw<7A>޸<EFBFBD> 2023 - 8 - 23 <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5>ֵ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѹ<EFBFBD>ȼ<EFBFBD>
errorlog_num(pDataValue, dAngleTemp, data->voltage_level, &data_reason_map, data->time);
}
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>ֵ)
//zw<7A>޸<EFBFBD> 2023 - 8 - 23 <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5>ֵ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѹ<EFBFBD>ȼ<EFBFBD>
errorlog_num(pDataValue, dTemp, data->voltage_level, &data_reason_map, data->time);
}
}
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>
//lnk20241122<32><32><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Щ
if(false)//zw<7A>޸<EFBFBD> 2023-8-28 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ƥ<><C6A5><EFBFBD><EFBFBD> <20><>־<EFBFBD><D6BE>¼ִ<C2BC><D6B4><EFBFBD>ж<EFBFBD><D0B6>߼<EFBFBD>
{
cout << "!!!!!!!!!!!!!!!!!!!!!!===============" << data_match_map_1.count() << "--------" << data_match_map_2.count() << endl;
cout << "!!!!!!!!!!!!!!!!!!!!!!---------------" << data_reason_map.count() << endl;
if(data_match_map_1.count() + data_match_map_2.count() <= 1200)//<2F><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>¼ Ĭ<><C4AC>Ϊtrue ֻҪ<D6BB><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>kafka<6B><61>¼<EFBFBD><C2BC>ִ<EFBFBD><D6B4>
{
errorlog_dataintegrity_timespanlist(data->mp_id,data->time);
errorlog_dataintegrity_timespanlist_2(data->mp_id);
QDateTime dataintegrity_time = QDateTime::fromTime_t(data->time/1000);
QString tmp_chr1 = dataintegrity_time.toString("yyyy-MM-dd");
QString tmp_chr2 = dataintegrity_time.toString("yyyy-MM-dd hh:mm:ss");
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>¼lnk202411-6
//cout << errorlog_dataintegrity_pgsql(tmp_chr1, tmp_chr2, data->mp_id,false).toAscii().data() << endl;
}
if(data_reason_map.count() != 0)//<2F><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>¼ ֻҪmap<61><70><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA> <20><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
{
QString reasonlog = errorlog_num_json(data->mp_id, data_reason_map);
QDateTime savetime = QDateTime::fromTime_t(data->time / 1000);
QString Qfilename, Qsavename;
Qfilename.append("comtrade/").append(data->mp_id).append("/").append(savetime.toString("yyyyMMdd")).append("/").append(savetime.toString("yyyyMMddhhmmss")).append("_reason.log");
Qsavename.append("/FeProject/dat/").append(data->mp_id).append("_").append(savetime.toString("yyyyMMddhhmmss")).append("_reason.log");
char file_name[256];
memset(file_name, 0, 256);
sprintf(file_name, "%s", Qfilename.toAscii().data());
char save_name[256];
memset(save_name, 0, 256);
sprintf(save_name, "%s", Qsavename.toAscii().data());
//cout << file_name << "!!!!!!!!!!!!!!!!!!!!!!!!!!" << save_name << endl;
//cout << reasonlog.toAscii().data() << endl;
oss_data_t OssData;
OssData.filename = file_name;
OssData.savename = save_name;
OssData.data = reasonlog;
QDateTime dataintegrity_time = QDateTime::fromTime_t(data->time / 1000);
QString tmp_chr1 = dataintegrity_time.toString("yyyy-MM-dd");
OssData.id = data->mp_id;
OssData.time = tmp_chr1; //ʱ<><CAB1>
OssData.list_num = data_reason_map.size();
OssData.log_name = "reason";
if (data->time % 3600000 == 0) {
oss_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
oss_data_list.append(OssData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
oss_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
}
//std::ofstream file(save_name); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣬴<EFBFBD><F3A3ACB4><EFBFBD><EFBFBD>ļ<EFBFBD> example.txt
//if (file.is_open()) { // <20>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
// file << reasonlog.toAscii().data() << "\n";
// file.close(); // <20>ر<EFBFBD><D8B1>ļ<EFBFBD>
//}
//else {
// cout << "Unable to open file\n" << endl;
//}
//PutOSS(file_name, save_name);
//std::remove(save_name);
/*QDateTime dataintegrity_time = QDateTime::fromTime_t(data->time / 1000);
QString tmp_chr1 = dataintegrity_time.toString("yyyy-MM-dd");
QString pgsql;
pgsql.append(errorlog_num_pgsql(data->mp_id, tmp_chr1, Qfilename, data_reason_map.size()));
cout << pgsql.toAscii().data() << endl;*/
}
if(data_match_map_1.count() != 0 || data_match_map_2.count() != 0)//ƥ<><C6A5><EFBFBD>ʼ<EFBFBD>¼ ֻҪmap<61><70><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA> <20><>¼<EFBFBD><C2BC>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
{
QString matchlog = errorlog_datamatch_json(data_match_map_1, data_match_map_2,data->time);
//cout << matchlog.toAscii().data() << endl;
QDateTime savetime = QDateTime::fromTime_t(data->time / 1000);
QString Qfilename,Qsavename;
Qfilename.append("comtrade/").append(data->mp_id).append("/").append(savetime.toString("yyyyMMdd")).append("/").append(savetime.toString("yyyyMMddhhmmss")).append("_match.log");
Qsavename.append("/FeProject/dat/").append(data->mp_id).append("_").append(savetime.toString("yyyyMMddhhmmss")).append("_match.log");
char file_name[256];
memset(file_name,0,256);
sprintf(file_name,"%s",Qfilename.toAscii().data());
char save_name[256];
memset(save_name, 0, 256);
sprintf(save_name,"%s", Qsavename.toAscii().data());
cout << file_name << "!!!!!!!!!!!!!!!!!!!!!!!!!!" << save_name << endl;
oss_data_t OssData;
OssData.filename = file_name;
OssData.savename = save_name;
OssData.data = matchlog;
QDateTime dataintegrity_time = QDateTime::fromTime_t(data->time / 1000);
QString tmp_chr1 = dataintegrity_time.toString("yyyy-MM-dd");
OssData.id = data->mp_id;
OssData.time= tmp_chr1; //ʱ<><CAB1>
//match_log
OssData.base_mat_num= pDataType->BaseFlag1;
OssData.adv_mat_num= pDataType->BaseFlag1 + pDataType->BaseFlag0;
OssData.base_act_num= pDataType->BaseFlag1 - data_match_map_1.count();
OssData.adv_act_num= pDataType->BaseFlag1 + pDataType->BaseFlag0 - data_match_map_1.count() - data_match_map_2.count();
OssData.log_name = "match";
if (data->time % 3600000 == 0) {
oss_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
oss_data_list.append(OssData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
oss_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
}
//std::ofstream file(save_name); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣬴<EFBFBD><F3A3ACB4><EFBFBD><EFBFBD>ļ<EFBFBD> example.txt
//if (file.is_open()) { // <20>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
// file << matchlog.toAscii().data() << "\n";
// file.close(); // <20>ر<EFBFBD><D8B1>ļ<EFBFBD>
//}
//else {
// cout << "Unable to open file\n" << endl;
//}
//PutOSS(file_name, save_name);
//std::remove(save_name);
//GetOSS(file_name, savename);
/*QDateTime dataintegrity_time = QDateTime::fromTime_t(data->time / 1000);
QString tmp_chr1 = dataintegrity_time.toString("yyyy-MM-dd");
QString pqsql;
pqsql.append(errorlog_datamatch_pgsql(data->mp_id, tmp_chr1, pDataType->BaseFlag1, pDataType->BaseFlag1 + pDataType->BaseFlag0, pDataType->BaseFlag1 - data_match_map_1.count(), pDataType->BaseFlag1 + pDataType->BaseFlag0 - data_match_map_1.count() - data_match_map_2.count(), Qfilename));
cout << pqsql.toAscii().data() << endl;*/
}
QMap<QString, QDateTime>().swap(data_match_map_1);
QMap<QString, QDateTime>().swap(data_match_map_2);
QMap<QString, MP_RATIONALITY*>().swap(data_reason_map);
}
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++;
//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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
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++;
//KafkaData.strText.append(QString("{\"SEQ\":\"%1\", ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>
KafkaData.strText.append(QString("\"%1\":{ ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(pSequence->strSeq)); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
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>
if (pDataValue->BaseFlag == "1") {
errorlog_datamatch(pDataValue->strFullName, &data_match_map_1);
}
else {
errorlog_datamatch(pDataValue->strFullName, &data_match_map_2);
}
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>ֵ)
//zw<7A>޸<EFBFBD> 2023 - 8 - 23 <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5>ֵ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѹ<EFBFBD>ȼ<EFBFBD>
errorlog_num(pDataValue, dAngleTemp, data->voltage_level, &data_reason_map, data->time);
}
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>ֵ)
//zw<7A>޸<EFBFBD> 2023 - 8 - 23 <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> ʵ<><CAB5>ֵ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ѹ<EFBFBD>ȼ<EFBFBD>
errorlog_num(pDataValue, dTemp, data->voltage_level, &data_reason_map, data->time);
}
}
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>
//lnk20241122<32><32><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Щ
if (false)//zw<7A>޸<EFBFBD> 2023-8-28 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ƥ<><C6A5><EFBFBD><EFBFBD> <20><>־<EFBFBD><D6BE>¼ִ<C2BC><D6B4><EFBFBD>ж<EFBFBD><D0B6>߼<EFBFBD>
{
cout << "!!!!!!!!!!!!!!!!!!!!!!===============" << data_match_map_1.count() << "--------" << data_match_map_2.count() << endl;
cout << "!!!!!!!!!!!!!!!!!!!!!!---------------" << data_reason_map.count() << endl;
if (data_match_map_1.count() + data_match_map_2.count() <= 1200)//<2F><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>¼ Ĭ<><C4AC>Ϊtrue ֻҪ<D6BB><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>kafka<6B><61>¼<EFBFBD><C2BC>ִ<EFBFBD><D6B4>
{
errorlog_dataintegrity_timespanlist(data->mp_id, data->time);
errorlog_dataintegrity_timespanlist_2(data->mp_id);
QDateTime dataintegrity_time = QDateTime::fromTime_t(data->time / 1000);
QString tmp_chr1 = dataintegrity_time.toString("yyyy-MM-dd");
QString tmp_chr2 = dataintegrity_time.toString("yyyy-MM-dd hh:mm:ss");
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>¼lnk202411-6
//cout << errorlog_dataintegrity_pgsql(tmp_chr1, tmp_chr2, data->mp_id,true).toAscii().data() << endl;
}
if (data_reason_map.count() != 0)//<2F><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>¼ ֻҪmap<61><70><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA> <20><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
{
QString reasonlog = errorlog_num_json(data->mp_id, data_reason_map);
QDateTime savetime = QDateTime::fromTime_t(data->time / 1000);
QString Qfilename, Qsavename;
Qfilename.append("comtrade/").append(data->mp_id).append("/").append(savetime.toString("yyyyMMdd")).append("/").append(savetime.toString("yyyyMMddhhmmss")).append("_reason.log");
Qsavename.append("/FeProject/dat/").append(data->mp_id).append("_").append(savetime.toString("yyyyMMddhhmmss")).append("_reason.log");
char file_name[256];
memset(file_name, 0, 256);
sprintf(file_name, "%s", Qfilename.toAscii().data());
char save_name[256];
memset(save_name, 0, 256);
sprintf(save_name, "%s", Qsavename.toAscii().data());
cout << file_name << "!!!!!!!!!!!!!!!!!!!!!!!!!!" << save_name << endl;
oss_data_t OssData;
OssData.filename = file_name;
OssData.savename = save_name;
OssData.data = reasonlog;
QDateTime dataintegrity_time = QDateTime::fromTime_t(data->time / 1000);
QString tmp_chr1 = dataintegrity_time.toString("yyyy-MM-dd");
OssData.id = data->mp_id;
OssData.time = tmp_chr1; //ʱ<><CAB1>
OssData.list_num = data_reason_map.size();
OssData.log_name = "reason";
if (data->time % 3600000 == 0) {
oss_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
oss_data_list.append(OssData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
oss_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
}
//std::ofstream file(save_name); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣬴<EFBFBD><F3A3ACB4><EFBFBD><EFBFBD>ļ<EFBFBD> example.txt
//if (file.is_open()) { // <20>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
// file << reasonlog.toAscii().data() << "\n";
// file.close(); // <20>ر<EFBFBD><D8B1>ļ<EFBFBD>
//}
//else {
// cout << "Unable to open file\n" << endl;
//}
//PutOSS(file_name, save_name);
//std::remove(save_name);
/*QDateTime dataintegrity_time = QDateTime::fromTime_t(data->time / 1000);
QString tmp_chr1 = dataintegrity_time.toString("yyyy-MM-dd");
QString pgsql;
pgsql.append(errorlog_num_pgsql(data->mp_id, tmp_chr1, Qfilename, data_reason_map.size()));
cout << pgsql.toAscii().data() << endl;*/
}
if (data_match_map_1.count() != 0 || data_match_map_2.count() != 0)//ƥ<><C6A5><EFBFBD>ʼ<EFBFBD>¼ ֻҪmap<61><70><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA> <20><>¼<EFBFBD><C2BC>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
{
QString matchlog = errorlog_datamatch_json(data_match_map_1, data_match_map_2, data->time);
//cout << matchlog.toAscii().data() << endl;
QDateTime savetime = QDateTime::fromTime_t(data->time / 1000);
QString Qfilename, Qsavename;
Qfilename.append("comtrade/").append(data->mp_id).append("/").append(savetime.toString("yyyyMMdd")).append("/").append(savetime.toString("yyyyMMddhhmmss")).append("_match.log");
Qsavename.append("/FeProject/dat/").append(data->mp_id).append("_").append(savetime.toString("yyyyMMddhhmmss")).append("_match.log");
char file_name[256];
memset(file_name, 0, 256);
sprintf(file_name, "%s", Qfilename.toAscii().data());
char save_name[256];
memset(save_name, 0, 256);
sprintf(save_name, "%s", Qsavename.toAscii().data());
cout << file_name << "!!!!!!!!!!!!!!!!!!!!!!!!!!" << save_name << endl;
oss_data_t OssData;
OssData.filename = file_name;
OssData.savename = save_name;
OssData.data = matchlog;
QDateTime dataintegrity_time = QDateTime::fromTime_t(data->time / 1000);
QString tmp_chr1 = dataintegrity_time.toString("yyyy-MM-dd");
OssData.id = data->mp_id;
OssData.time = tmp_chr1; //ʱ<><CAB1>
//match_log
OssData.base_mat_num = pDataType->BaseFlag1;
OssData.adv_mat_num = pDataType->BaseFlag1 + pDataType->BaseFlag0;
OssData.base_act_num = pDataType->BaseFlag1 - data_match_map_1.count();
OssData.adv_act_num = pDataType->BaseFlag1 + pDataType->BaseFlag0 - data_match_map_1.count() - data_match_map_2.count();
OssData.log_name = "match";
if (data->time % 3600000 == 0) {
oss_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
oss_data_list.append(OssData); //<2F><><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
oss_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
}
//std::ofstream file(save_name); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣬴<EFBFBD><F3A3ACB4><EFBFBD><EFBFBD>ļ<EFBFBD> example.txt
//if (file.is_open()) { // <20>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
// file << matchlog.toAscii().data() << "\n";
// file.close(); // <20>ر<EFBFBD><D8B1>ļ<EFBFBD>
//}
//else {
// cout << "Unable to open file\n" << endl;
//}
/*PutOSS(file_name, save_name);
std::remove(save_name);*/
//GetOSS(file_name, savename);
/*QDateTime dataintegrity_time = QDateTime::fromTime_t(data->time / 1000);
QString tmp_chr1 = dataintegrity_time.toString("yyyy-MM-dd");
QString pqsql;
pqsql.append(errorlog_datamatch_pgsql(data->mp_id, tmp_chr1, pDataType->BaseFlag1, pDataType->BaseFlag1 + pDataType->BaseFlag0, pDataType->BaseFlag1 - data_match_map_1.count(), pDataType->BaseFlag1 + pDataType->BaseFlag0 - data_match_map_1.count() - data_match_map_2.count(), Qfilename));
cout << pqsql.toAscii().data() << endl;*/
}
QMap<QString, QDateTime>().swap(data_match_map_1);
QMap<QString, QDateTime>().swap(data_match_map_2);
QMap<QString, MP_RATIONALITY*>().swap(data_reason_map);
}
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;
}
/*//<2F><><EFBFBD><EFBFBD>json<6F><6E>̬<EFBFBD><CCAC>Ϣ zw<7A>޸<EFBFBD> 2023-8-25 <20><><EFBFBD><EFBFBD>json<6F>
int transfer_json_qvvr_data(unsigned int func_type, int monitor_id, float mag, float 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) //<2F><><EFBFBD><EFBFBD>json<6F><6E>̬<EFBFBD><CCAC>Ϣ <20><><EFBFBD><EFBFBD>> MMS_Wave
{
XmlConfig c_xmlcfg;
if (xmlinfo_list.contains(devtype)) {
c_xmlcfg = xmlinfo_list[devtype]->xmlcfg;
}
else {
c_xmlcfg = xmlcfg;
}
//if (0 == monitor_id) //jsonƴ<6E>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
// return 0;
if (strlen(mp_id) == 0) {
return 0;
}
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;
// if (400 == func_type) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>> MMS_Recall
// KafkaData.strTopic = "HISDATA"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// else
// KafkaData.strTopic = "RTDATA";
KafkaData.strTopic = "Event"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
if (400 == func_type || 500 == func_type || 600 == func_type || 700 == func_type) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>> MMS_Recall
KafkaData.strText.append("\"DATA_TYPE\":\"04\", "); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else
KafkaData.strText.append("\"DATA_TYPE\":\"04\", "); //ƴ<><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(start_tm)); //ƴ<><C6B4> ʱ<><CAB1>
KafkaData.strText.append("\"VOLTAGE\":{"); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>VOLTAGE
KafkaData.strText.append(QString("\"MAG\":%1").arg(mag)); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
KafkaData.strText.append(QString(", \"DUR\":%1").arg(dur * 1000)); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString(", \"STARTTIME\":%1").arg(start_tm )); //ƴ<><C6B4> <20><>ʼʱ<CABC><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString(", \"ENDTIME\":%1").arg(end_tm)); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString(", \"DISKIND\":\"%1%2\"").arg("0").arg(dis_kind)); //ƴ<><C6B4> <20>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD>(1210001-<2D><><EFBFBD><EFBFBD> 1210002-<2D>ݽ<EFBFBD> 1210004-<2D>ж<EFBFBD> 1210003-<2D><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString(", \"CFG_FILE\":\"%1\"").arg(uuid_cfg)); //ƴ<><C6B4> cfg<66><67><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString(", \"DAT_FILE\":\"%1\"").arg(uuid_dat)); //ƴ<><C6B4> dat<61><74><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
if (c_xmlcfg.WavePhasicFlag == "1") {
QString Qvvr_Rptname;
Qvvr_Rptname.append(Qvvr_rptname);
if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicA) != -1) {
KafkaData.strText.append(QString(", \"PHASIC\":\"%1\"").arg("A")); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
else if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicB) != -1) {
KafkaData.strText.append(QString(", \"PHASIC\":\"%1\"").arg("B")); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
else if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicC) != -1) {
KafkaData.strText.append(QString(", \"PHASIC\":\"%1\"").arg("C")); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
else {
KafkaData.strText.append(QString(", \"PHASIC\":\"%1\"").arg("unknow")); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
}
else {
KafkaData.strText.append(QString(", \"PHASIC\":\"%1\"").arg("unknow")); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>
KafkaData.strText.append("}}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>
printf("transfer json qvvr data: %s==%s \n",KafkaData.strText.toStdString().c_str(), Qvvr_rptname);
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>
//if (400 != func_type) { //<2F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
// KafkaData.strTopic = "Event";
// kafka_data_list.append(KafkaData);
//}
kafka_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return 1;
}*/
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;
if (!xmlinfo_list.contains(type))
{
Xmldata* config = new Xmldata();
xmlinfo_list.insert(type, config);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125
cout << "xmlinfo_list insert type:" << type.toStdString() << endl;
}
else
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lnk20241125
cout << "xmlinfo_list type contain:" << type.toStdString() << endl;
QDateTime time(QDate(year, month, day), QTime(hour, minute, second));
if (xmlinfo_list[type]->xmlbase.datetime == time) {
xmlinfo_list[type]->updataflag = false;
}
else {
xmlinfo_list[type]->updataflag = true;
}
}
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);
QDateTime time(QDate(year, month, day), QTime(hour, minute, second));
xmlinfo_list[type]->xmlbase.datetime = time;
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;
}
/*if (FILE_FLAG == 1) {
GetOSS(file_name, save_name);
}
else if (FILE_FLAG == 2) {
OBSFile(save_name, file_name, "getObject");
}
else if (FILE_FLAG == 3) {
//OBSFile(save_name, file_name, "getObject");
}
else {
}*/
}
//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");
ParseXMLConfig2(&xmlcfg, &topicList, path); //<2F><><EFBFBD><EFBFBD> ParseXMLConfig() <20><><EFBFBD><EFBFBD>JiangSu_Config.xml<6D><6C><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
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) {
ParseXMLConfig2(&(value2->xmlcfg), &(value2->topicList), value2->xmlbase.MODEL_ID);
}
}
}
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;
if (xmlinfo_list.contains(type)) {
cout << "!!!!!!!!!! xmlinfo_list.contains(devtype) == 1 !!!!!!!!!!!" << endl;
QByteArray byteArray = xmlinfo_list[devtype]->xmlbase.MODEL_ID.toLocal8Bit();
char* charArray = new char[byteArray.size()];
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);
if (xmlinfo_list.contains(type)) {
cout << "!!!!!!!!!! xmlinfo_list.contains(devtype) == 1 !!!!!!!!!!!" << endl;
QString ied;
ied.append(xmlinfo_list[devtype]->xmlcfg.IEDname);//PQMonitor
ied.append(xmlinfo_list[devtype]->xmlcfg.LDevicePrefix);
ied.append("%d");
QByteArray byteArray = ied.toLocal8Bit();
char* charArray = new char[byteArray.size()];
memcpy(charArray, byteArray.data(), byteArray.size());
charArray[byteArray.size()] = '\0';
return charArray;
}
else {
cout << "!!!!!!!!!! xmlinfo_list.contains(devtype) == 0 !!!!!!!!!!!" << endl;
//cout << "ttttttttttttttt" << topicList.size() << endl;
//cout << "ttttttttttttttt" << xmlcfg.IEDname.toAscii().data() << endl;
QString ied;
ied.append(xmlcfg.IEDname);
ied.append(xmlcfg.LDevicePrefix);
ied.append("%d");
QByteArray byteArray = ied.toLocal8Bit();
char* charArray = new char[byteArray.size()];
memcpy(charArray, byteArray.data(), byteArray.size());
charArray[byteArray.size()] = '\0';
return charArray;
}
}
char* Get_LDevice(char* devtype)
{
QString type;
type.append(devtype);
if (xmlinfo_list.contains(type)) {//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>а<EFBFBD><D0B0><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>
QString ied;
ied.append(xmlinfo_list[devtype]->xmlcfg.LDevicePrefix);//ʹ<>ý<EFBFBD><C3BD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ն<EFBFBD>ǰ׺
ied.append("%d");
QByteArray byteArray = ied.toLocal8Bit();
char* charArray = new char[byteArray.size()];
memcpy(charArray, byteArray.data(), byteArray.size());
charArray[byteArray.size()] = '\0';
return charArray;
}
else {
//cout << "ttttttttttttttt" << topicList.size() << endl;
//cout << "ttttttttttttttt" << xmlcfg.IEDname.toAscii().data() << endl;
QString ied;
ied.append(xmlcfg.LDevicePrefix);//ʹ<><CAB9>Ĭ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ն<EFBFBD>ǰ׺
ied.append("%d");
QByteArray byteArray = ied.toLocal8Bit();
char* charArray = new char[byteArray.size()];
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)
{
/*QString pgsql;
pgsql.append(QString("insert into \"%1\".\"%2meas_pq_comm_status_tr\"(\"terminal_id\",\"statistical_date\",\"comm_status\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
pgsql.append(QString("values('%1',date'%2',1) ").arg(id).arg(QDateTime::currentDateTime().toString("yyyyMMdd")));
pgsql.append(QString("on conflict(\"terminal_id\",\"statistical_date\") do update set "));
pgsql.append(QString("\"comm_status\"= \"%1\".\"%2meas_pq_comm_status_tr\".\"comm_status\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(pgsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
//cout << pgsql.toAscii().data() << endl;*/
/*std::vector<std::string> codes;
codes.push_back("log");
codes.push_back(std::string(id));
codes.push_back(QDateTime::currentDateTime().toString("yyyyMMdd").toStdString());
parse_commstatus_write(codes);
codes.clear();*/
//<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>µķ<C2B5>ʽ
//<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;
}
cJSON_AddItemToObject(jsonObject, "Datetime", datetime_item);
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);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
//cJSON_AddItemToArray(jsonArray, jsonObject);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
//char* jsonString = cJSON_PrintUnformatted(jsonArray);
char* jsonString = cJSON_Print(jsonObject);
if (jsonString == NULL) {
std::cerr << "Failed to print JSON object." << std::endl;
cJSON_Delete(jsonObject);
return;
}
std::cout << "jsonString" << jsonString << std::endl;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Զ<EFBFBD><D4B6>
SendJsonAPI_web(WEB_COMFLAG, "", jsonString,&ptr);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> ptr <20>Ƿ<EFBFBD>Ϊ NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD> std::string <20><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7>
if (ptr != NULL) {
handleCommentResponse(std::string(ptr));
free(ptr); // <20><><EFBFBD><EFBFBD> SendJsonAPI_web <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<DAB4>ǵ<EFBFBD><C7B5>ͷ<EFBFBD>
} 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;
}
// ת<><D7AA>Ϊ QString
QString result = QString::fromStdString(jsonString);
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
cJSON_Delete(jsonObject);
free(jsonString); // cJSON_PrintUnformattedʹ<64><CAB9>malloc<6F><63><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD> pgsql<71><6C>װ<EFBFBD><D7B0><EFBFBD><EFBFBD> <20>ն<EFBFBD>id <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> <20><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
void errorlog_pgsql(char* id, QString time, QString filename)
{
/*QString pgsql;//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>pgsql<71><6C><EFBFBD><EFBFBD>
pgsql.append(QString("insert into \"%1\".\"%2meas_pq_comm_error_tr\"(\"terminal_id\",\"statistical_date\",\"comm_status\",\"file_name\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
pgsql.append(QString("values('%1',date'%2',1,'%3') ").arg(id).arg(time).arg(filename));
pgsql.append(QString("on conflict(\"terminal_id\",\"statistical_date\") do update set "));
pgsql.append(QString("\"comm_status\"= \"%1\".\"%2meas_pq_comm_error_tr\".\"comm_status\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(pgsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!" << pgsql.toAscii().data() << endl;*/
/*std::vector<std::string> codes;
codes.push_back("log");
codes.push_back(std::string(id));
codes.push_back(time.toStdString());
codes.push_back(filename.toStdString());
parse_commerror_write(codes);
codes.clear();*/
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
void SoeRptSql(char* id, int state,char* rpt)
{
/*QDateTime savetime = QDateTime::currentDateTime();
QString pgsql;//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>pgsql<71><6C><EFBFBD><EFBFBD>
pgsql.append(QString("insert into \"%1\".\"%2meas_pq_comm_error_tr\"(\"terminal_id\",\"statistical_date\",\"comm_status\",\"file_name\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
pgsql.append(QString("values('%1',date'%2',%3,'%4') ").arg(id).arg(savetime.toString("yyyyMMdd")).arg(state).arg(rpt));
pgsql.append(QString("on conflict(\"terminal_id\",\"statistical_date\",\"file_name\") do update set "));
pgsql.append(QString("\"comm_status\"= %1;").arg(state));
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(pgsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>*/
/*std::vector<std::string> codes;
codes.push_back("soe");
codes.push_back(std::string(id));
codes.push_back(QDateTime::currentDateTime().toString("yyyyMMdd").toStdString());
codes.push_back(intToString(state));
codes.push_back(std::string(rpt));
parse_commerror_write(codes);
codes.clear();*/
}
//lnk 20241210ɾ<30><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
#if 0
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pgsql<71><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString errorlog_num_pgsql(QString monitorId, QString datatime, QString filename, int count)
{
/*QString log_pqsql;//<2F><><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD>pgsql<71><6C><EFBFBD><EFBFBD>
log_pqsql.append(QString("insert into \"%1\".\"%2meas_pq_measpoint_rationality_tr\"(\"monitor_id\",\"statistical_date\",\"irrat_num\",\"file_name\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
log_pqsql.append(QString("values('%1',date'%2',%3,'%4') ").arg(monitorId).arg(datatime).arg(count).arg(filename));
log_pqsql.append(QString("on conflict(\"monitor_id\",\"statistical_date\") do nothing;"));
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(log_pqsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return log_pqsql;*/
/*std::vector<std::string> codes;
codes.push_back("log");
codes.push_back(monitorId.toStdString());
codes.push_back(datatime.toStdString());
codes.push_back(intToString(count));
codes.push_back(filename.toStdString());
parse_rationality_write(codes);
codes.clear();*/
}
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><><EFBFBD><EFBFBD>pgsql<71><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ն<EFBFBD>id <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString errorlog_dataintegrity_pgsql(QString time, QString datatime,QString monitorId,bool recallflag)
{
/*int num = 480;
if (data_timespan_list[monitorId]->msspan != 0) {
num = 1440 / data_timespan_list[monitorId]->msspan;
}
QString pgsql;//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>pgsql<71><6C><EFBFBD><EFBFBD>
pgsql.append(QString("insert into \"%1\".\"%2meas_pq_measpoint_intact_tr\"(\"monitor_id\",\"statistical_date\",\"exp_num\",\"act_num\",\"value_time\",\"last_value_time\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
pgsql.append(QString("values('%1',date'%2',480,1,array[TIMESTAMP'%3'],'%4') ").arg(monitorId).arg(time).arg(datatime).arg(datatime));
pgsql.append(QString("on conflict(\"monitor_id\",\"statistical_date\") do update set "));
//pgsql.append(QString("\"value_time\"=(array_cat(EXCLUDED.\"value_time\", \"%1\".\"%2meas_pq_measpoint_intact_tr\".\"value_time\"))[:1440] , \"exp_num\" = %3 , \"last_value_time\" = EXCLUDED.\"last_value_time\" ,\"act_num\"= \"%4\".\"%5meas_pq_measpoint_intact_tr\".\"act_num\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX).arg(num).arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
if (recallflag == true) {
if (data_timespan_list[monitorId]->msspan != 0) {
pgsql.append(QString("\"value_time\"= ARRAY_APPEND(\"%1\".\"%2meas_pq_measpoint_intact_tr\".\"value_time\", '%3') , \"exp_num\" = %4 , \"last_value_time\" = EXCLUDED.\"last_value_time\" ,\"act_num\"= \"%5\".\"%6meas_pq_measpoint_intact_tr\".\"act_num\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX).arg(datatime).arg(num).arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
}
else {
pgsql.append(QString("\"value_time\"= ARRAY_APPEND(\"%1\".\"%2meas_pq_measpoint_intact_tr\".\"value_time\", '%3') , \"last_value_time\" = EXCLUDED.\"last_value_time\" ,\"act_num\"= \"%4\".\"%5meas_pq_measpoint_intact_tr\".\"act_num\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX).arg(datatime).arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
}
}
else {
pgsql.append(QString("\"value_time\"= ARRAY_APPEND(\"%1\".\"%2meas_pq_measpoint_intact_tr\".\"value_time\", '%3') , \"exp_num\" = %4 , \"last_value_time\" = EXCLUDED.\"last_value_time\" ,\"act_num\"= \"%5\".\"%6meas_pq_measpoint_intact_tr\".\"act_num\" + 1;").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX).arg(datatime).arg(num).arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
}
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(pgsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return pgsql;*/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>202411-1lnk<6E><6B>ֻ<EFBFBD><D6BB>Ҫid<69><64>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2>к<EFBFBD><D0BA><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʱ<D2AA><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*std::vector<std::string> codes;
codes.push_back("log");
codes.push_back(time.toStdString());
codes.push_back(datatime.toStdString());
codes.push_back(monitorId.toStdString());
codes.push_back(boolToString(recallflag));
codes.push_back(intToString(data_timespan_list[monitorId]->msspan));
parse_dataintegrity_write(codes);
codes.clear();*/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
char* ptr=NULL;
// <20><><EFBFBD><EFBFBD> cJSON <20><><EFBFBD><EFBFBD>
cJSON* jsonArray = cJSON_CreateArray();
// <20><><EFBFBD><EFBFBD> JSON <20><><EFBFBD><EFBFBD>
cJSON* jsonObject = cJSON_CreateObject();
cJSON_AddStringToObject(jsonObject, "id", monitorId.toStdString().c_str());
cJSON_AddStringToObject(jsonObject, "date", datatime.toStdString().c_str());
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
cJSON_AddItemToArray(jsonArray, jsonObject);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
char* jsonString = cJSON_PrintUnformatted(jsonArray);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Զ<EFBFBD><D4B6>
SendJsonAPI_web(WEB_INTEGRITY,"", jsonString,&ptr);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> ptr <20>Ƿ<EFBFBD>Ϊ NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD> std::string <20><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7>
if (ptr != NULL) {
handleCommentResponse(std::string(ptr));
free(ptr); // <20><><EFBFBD><EFBFBD> SendJsonAPI_web <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<DAB4>ǵ<EFBFBD><C7B5>ͷ<EFBFBD>
} 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;
}
// ת<><D7AA>Ϊ QString
QString result = QString::fromStdString(jsonString);
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
cJSON_Delete(jsonArray);
free(jsonString); // cJSON_PrintUnformattedʹ<64><CAB9>malloc<6F><63><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
return result; //<2F><><EFBFBD><EFBFBD>json<6F><6E>ӡ<EFBFBD><D3A1>
}
//<2F><>ֵƥ<D6B5><C6A5><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><><EFBFBD><EFBFBD>pgsql<71><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ն<EFBFBD>id <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
QString errorlog_datamatch_pgsql(QString id, QString time, int BASE_MAT_NUM,int ADV_MAT_NUM,int BASE_ACT_NUM,int ADV_ACT_NUM,QString filename)
{
/*QString pgsql;//<2F><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>pgsql<71><6C><EFBFBD><EFBFBD>
pgsql.append(QString("insert into \"%1\".\"%2meas_pq_measpoint_match_tr\"(\"monitor_id\",\"statistical_date\",\"base_mat_num\",\"adv_mat_num\",\"base_act_num\",\"adv_act_num\",\"file_name\") ").arg(POSTGRES_SCHEMA).arg(POSTGRES_TABLEPREFIX));
pgsql.append(QString("values('%1',date'%2',%3,%4,%5,%6,'%7') ").arg(id).arg(time).arg(BASE_MAT_NUM).arg(ADV_MAT_NUM).arg(BASE_ACT_NUM).arg(ADV_ACT_NUM).arg(filename));
pgsql.append(QString("on conflict(\"monitor_id\",\"statistical_date\") do nothing;"));
//pgsql.append(QString("\"BASE_ACT_NUM\"= %1 , \"ADV_ACT_NUM\"= %2;").arg(BASE_ACT_NUM).arg(ADV_ACT_NUM));
Sql_data_list_mutex.lock(); //<2F><><EFBFBD><EFBFBD>
Sql_data_list.append(pgsql);
Sql_data_list_mutex.unlock(); //<2F><><EFBFBD><EFBFBD>
return pgsql;*/
/*std::vector<std::string> codes;
codes.push_back("log");
codes.push_back(id.toStdString());
codes.push_back(time.toStdString());
codes.push_back(intToString(BASE_MAT_NUM));
codes.push_back(intToString(ADV_MAT_NUM));
codes.push_back(intToString(BASE_ACT_NUM));
codes.push_back(intToString(ADV_ACT_NUM));
codes.push_back(filename.toStdString());
parse_match_write(codes);
codes.clear();*/
}
#endif
//lnk202411-5 <20><>̬<EFBFBD><CCAC><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>ʹ<EFBFBD><CAB9>kafka<6B><61><EFBFBD>ͣ<EFBFBD><CDA3>ij<EFBFBD>http<74>ӿ<EFBFBD>
int transfer_json_qvvr_data(unsigned int func_type, int monitor_id,
float mag, float dur, long long start_tm, long long end_tm, int dis_kind, //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC>ʼʱ<CABC><EFBFBD><E4A3AC><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
char* uuid_cfg,char* uuid_dat, //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ļ<EFBFBD>
char* mp_id,char* Qvvr_rptname,char* devtype) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
{
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;
}
// <20>洢 uuid_cfg <20><> uuid_dat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//const char wave_paths[] = {"/comtrade/"};
// <20><>ʼ<EFBFBD><CABC> cJSON <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cJSON* root = cJSON_CreateObject();
// ƴ<><C6B4> JSON <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>Ϊ<EFBFBD><CEAA>http<74>ӿڲ<D3BF><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
cJSON_AddStringToObject(root, "monitorId", mp_id);
cJSON_AddNumberToObject(root, "amplitude", mag);
cJSON_AddNumberToObject(root, "duration", dur * 1000);
cJSON_AddNumberToObject(root, "eventType", dis_kind);
// <20><>ʽ<EFBFBD><CABD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>
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);
// <20><><EFBFBD>Ӻ<EFBFBD><D3BA>벿<EFBFBD><EBB2BF>
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); // <20><>̬<EFBFBD><CCAC><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
cJSON_AddStringToObject(root, "wavePathdat", uuid_dat); // <20><>̬<EFBFBD><CCAC><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𲿷<EFBFBD>
if (c_xmlcfg.WavePhasicFlag == "1") {
QString Qvvr_Rptname;//ת<><D7AA>Ϊqstring<6E><67>ʽ
Qvvr_Rptname.append(Qvvr_rptname);
if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicA) != -1) { //<2F><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
cJSON_AddStringToObject(root, "phase", "A"); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
else if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicB) != -1) {
cJSON_AddStringToObject(root, "phase", "B"); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
else if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicC) != -1) {
cJSON_AddStringToObject(root, "phase", "C"); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
else {
cJSON_AddStringToObject(root, "phase", "unknow"); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
}
else {
cJSON_AddStringToObject(root, "phase", "unknow"); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
// <20><> cJSON <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
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><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> ptr <20>Ƿ<EFBFBD>Ϊ NULL<4C><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD> std::string <20><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7>
if (ptr != NULL) {
handleCommentResponse(std::string(ptr));
free(ptr); // <20><><EFBFBD><EFBFBD> SendJsonAPI_web <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<DAB4>ǵ<EFBFBD><C7B5>ͷ<EFBFBD>
} 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;
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
cJSON_Delete(root);
free(json_string);
return 0;
}
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
cJSON_Delete(root);
free(json_string);
/*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 = "Event"; //kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append("{"); //ƴ<><C6B4> json<6F><6E>ʼ
if (400 == func_type || 500 == func_type || 600 == func_type || 700 == func_type) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>> MMS_Recall
KafkaData.strText.append("\"DATA_TYPE\":\"04\", "); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else
KafkaData.strText.append("\"DATA_TYPE\":\"04\", "); //ƴ<><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(start_tm)); //ƴ<><C6B4> ʱ<><CAB1>
KafkaData.strText.append("\"VOLTAGE\":{"); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>VOLTAGE
KafkaData.strText.append(QString("\"MAG\":%1").arg(mag)); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
KafkaData.strText.append(QString(", \"DUR\":%1").arg(dur * 1000)); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString(", \"STARTTIME\":%1").arg(start_tm )); //ƴ<><C6B4> <20><>ʼʱ<CABC><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString(", \"ENDTIME\":%1").arg(end_tm)); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString(", \"DISKIND\":\"%1%2\"").arg("0").arg(dis_kind)); //ƴ<><C6B4> <20>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD>(1210001-<2D><><EFBFBD><EFBFBD> 1210002-<2D>ݽ<EFBFBD> 1210004-<2D>ж<EFBFBD> 1210003-<2D><><EFBFBD><EFBFBD>)
KafkaData.strText.append(QString(", \"CFG_FILE\":\"%1\"").arg(uuid_cfg)); //ƴ<><C6B4> cfg<66><67><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
KafkaData.strText.append(QString(", \"DAT_FILE\":\"%1\"").arg(uuid_dat)); //ƴ<><C6B4> dat<61><74><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
if (c_xmlcfg.WavePhasicFlag == "1") {
QString Qvvr_Rptname;
Qvvr_Rptname.append(Qvvr_rptname);
if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicA) != -1) {
KafkaData.strText.append(QString(", \"PHASIC\":\"%1\"").arg("A")); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
else if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicB) != -1) {
KafkaData.strText.append(QString(", \"PHASIC\":\"%1\"").arg("B")); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
else if (Qvvr_Rptname.indexOf(c_xmlcfg.WavePhasicC) != -1) {
KafkaData.strText.append(QString(", \"PHASIC\":\"%1\"").arg("C")); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
else {
KafkaData.strText.append(QString(", \"PHASIC\":\"%1\"").arg("unknow")); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
}
else {
KafkaData.strText.append(QString(", \"PHASIC\":\"%1\"").arg("unknow")); //ƴ<><C6B4> <20><><EFBFBD><EFBFBD>
}
KafkaData.strText.append("}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>
KafkaData.strText.append("}}"); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD>
printf("transfer json qvvr data: %s==%s \n",KafkaData.strText.toStdString().c_str(), Qvvr_rptname);
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;
}
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 integrity_test()
{
QString time = "2024-11-6";
QString datatime = "2024-11-6 13:13:13";
QString monitorId = "000cf2a27f3f13f330b9e8690641e7f2";
errorlog_dataintegrity_pgsql(time,datatime,monitorId,1);
}*/
void comflag_test()
{
char id[] = {"000cf2a27f3f13f330b9e8690641e7f2"};
char datetime[] = {"2024-11-6 15:15:15"};
connectlog_pgsql(id,datetime,1);
}
///////////////////////////////////////////////////lnk2024-10-21////////////////////////////////////////////////////////