3574 lines
155 KiB
C++
3574 lines
155 KiB
C++
|
|
|
|||
|
|
#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////////////////////////////////////////////////////////
|