add delta process

This commit is contained in:
lnk
2025-02-14 16:44:38 +08:00
parent 399c3151a8
commit 322f41a03b
9 changed files with 931 additions and 83 deletions

View File

@@ -45,6 +45,9 @@ QString JSON_CONFIG_FN = QString("JiangSu_Config.xml");
#define APR_EBADF 0
const string PhsSTR = "ABCT";
extern int FILE_FLAG;
//lnk20250214
extern int isdelta_flag;
//<2F><><EFBFBD><EFBFBD>Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0B6A8>-------------------------------------------------------------/*
class CEventData //SOE<4F>¼<EFBFBD><C2BC><EFBFBD>
{
@@ -215,6 +218,11 @@ XmlConfig xmlcfg;//zw
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>ʶ
XmlConfig xmlcfg2;//lnk2024 - 8 - 13 <20>‰<EFBFBD><C289><EFBFBD><EFBFBD><EFBFBD>xml<6D>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
list<CTopic*> topicList2; //lnk2024-8-14<31><34><EFBFBD><EFBFBD>Kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QMap<QString, Xmldata*> xmlinfo_list2;//lnk2024-8-14 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺŶ<CDBA>Ӧ<EFBFBD><D3A6>xml<6D><6C><EFBFBD><EFBFBD>-<2D><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ľڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> kafka<6B><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern int isdelta_flag;//lnk2024-8-16 <20><><EFBFBD>ͽ<EFBFBD><CDBD>߱<EFBFBD>־
///////////////////////////////////////////////lnk20241021<32>滻web<65>ӿ<EFBFBD>//////////////////////////////////
void connectlog_pgsql(char* id,char* datetime,int status);
void errorlog_pgsql(char* id, QString time, QString filename);
@@ -578,6 +586,7 @@ QString errorlog_datamatch_json(QMap<QString, QDateTime> data_match_map_1, QMap<
return log_json;
}
#if 0
bool ParseXMLConfig2(XmlConfig *cfg, list<CTopic*> *ctopiclist,QString path) //<2F><><EFBFBD><EFBFBD>JiangSu_Config.xml<6D><6C><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
{
//cfg = new XmlConfig();
@@ -1056,6 +1065,652 @@ bool ParseXMLConfig2(XmlConfig *cfg, list<CTopic*> *ctopiclist,QString path) //
return true;
}
#endif
//lnk2024-8-16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
bool ParseXMLConfig2(int xml_flag, XmlConfig *cfg, list<CTopic*> *ctopiclist,QString path) //<2F><><EFBFBD><EFBFBD>JiangSu_Config.xml<6D><6C><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
{
//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)
QString strLine[4] = { "AB", "BC", "CA", "T" }; //lnk2024-8-14<31><34><EFBFBD><EFBFBD>ö<EFBFBD><C3B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(AB-T)
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 ((!xml_flag || "V" != it->strItemName) && "7" == strPhase) //<2F><>-<2D>ٶ<EFBFBD>ȡABC<42><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //lnk2024-8-14 <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
{
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 (xml_flag && "V" == it->strItemName && "112" == strPhase) //lnk2024-8-13<31><33><EFBFBD><EFBFBD>
{
for (int n = 0; n < 3; n++) //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>)
{
CSequence* sq = new CSequence(); //AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
sq->strSValue = node4.toElement().attribute("value"); //<2F><><EFBFBD><EFBFBD>ֵ(7<><37>ABC<42><43><EFBFBD>ࡢ112:<3A><>AB,BC,CA 8<><38>T<EFBFBD><54>)
sq->type = node4.toElement().attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
sq->strSeq = strLine[n]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>AB<41><42>BC<42><43>CA
it->SequenceList.push_back(sq); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strTag5 = node4.toElement().tagName(); //Sequence<63>ڵ<EFBFBD>
if ("Sequence" == strTag5) //<2F>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Sequence
{
QDomNodeList list5 = node4.childNodes(); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>Sequence<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD>б<EFBFBD>
for (int i5 = 0; i5 < list5.count(); i5++) //<2F><><EFBFBD><EFBFBD> AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>Value<75>б<EFBFBD>
{
QDomNode node5 = list5.at(i5); //node5 <Value>
if (node5.isElement())
{
QDomElement e_Value = node5.toElement(); //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪԪ<CEAA><D4AA>
QString strTag6 = e_Value.tagName(); //<2F><><EFBFBD><EFBFBD>Sequence<63><65> <20><><EFBFBD><EFBFBD>DataValue<75>ӽڵ<D3BD>
if ("Value" == strTag6) //<2F>޶<EFBFBD>ȡAB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>Value
{
QString strDVName = e_Value.attribute("name"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strDAName = e_Value.attribute("DA"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (strDAName.indexOf("phs*") >= 0) //DA<44><41><EFBFBD><EFBFBD>"phs*"
strDAName = strDAName.replace("*", sq->strSeq); //<2F><>DA<44><41><EFBFBD><EFBFBD>*<2A>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(AB<41><42>BC<42><43>CA) <20><><EFBFBD><EFBFBD>phsAB$cVal$mag$f
//<2F><>-<2D><>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ(AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>)-------------------------------------
if (strDVName.indexOf("%") >= 0 && strDAName.indexOf("%-") >= 0) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>% <20><> DA<44><41><EFBFBD><EFBFBD>%- <20><><EFBFBD><EFBFBD>V_%0,49%_MAX
{
QStringList strHarm1 = strDVName.split('%');
if (strHarm1.count() >= 2) //<2F><><EFBFBD><EFBFBD>%0,49%
{
strValueTemp = "%" + strHarm1.at(1) + "%"; //<2F><><EFBFBD><EFBFBD>%0,49%
QStringList strHarm2 = strHarm1.at(1).split(','); //<2F><><EFBFBD><EFBFBD>0,49
if (strHarm2.count() >= 2)
{
nStart = (strHarm2.at(0)).toInt(); //г<><D0B3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>0
nEnd = (strHarm2.at(1)).toInt(); //г<><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>49
}
}
QString substring = strDAName.mid(strDAName.indexOf("[") + 1, strDAName.indexOf("]") - strDAName.indexOf("[") - 1);
QStringList strDAList1 = substring.split('-');
int strDAoffset = (strDAList1.at(1)).toInt();
for (int i = nStart; i <= nEnd; i++) //<2F><><EFBFBD><EFBFBD> AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
QString strDVNameTemp = strDVName; //<2F><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QString strDANameTemp = strDAName;//<2F><>ʱ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataValue* dv1 = new CDataValue(); //AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ָ<EFBFBD><D6B8>
dv1->type = e_Value.attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (e_Value.attributes().contains("Coefficient")) {
dv1->strCoefficient = e_Value.attribute("Coefficient"); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
dv1->fCoefficient = e_Value.attribute("Coefficient").toFloat(); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
}
dv1->strOffset = e_Value.attribute("Offset"); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
dv1->iOffset = e_Value.attribute("Offset").toInt(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>) = <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> - װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
dv1->DO = e_Value.attribute("DO"); //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
std::cout << "!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!" << std::endl;
std::cout << dv1->DO.toUtf8().constData() << std::endl; //lnk <20><><EFBFBD><EFBFBD>ppv
std::cout << "!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!!!!!ppv!!!!!!!!!!!!!!!!!!!!!!" << std::endl;
dv1->strName = strDVNameTemp.replace(strValueTemp, QString::number(i + e_Value.attribute("Offset").toInt())); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%0,49%<25>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>SI_%0,49%<25><>ΪSI_1
dv1->DA = strDANameTemp.replace(substring, QString::number(i - strDAoffset)); //<2F><>DA<44><41>%-2<>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>phs*Har[1]$mag$f
//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>(AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>)
} //<2F><><EFBFBD><EFBFBD>ABC<42><43><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//continue; //AB<41><42>BC<42><43>CA<43><41><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>ȡ(AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>)-------------------------------
{
CDataValue* dv2 = new CDataValue(); //ABC<42><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ָ<EFBFBD><D6B8>
dv2->strName = e_Value.attribute("name"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dv2->type = e_Value.attribute("type"); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (e_Value.attributes().contains("Coefficient")) {
dv2->strCoefficient = e_Value.attribute("Coefficient"); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28>ַ<EFBFBD><D6B7><EFBFBD>)
dv2->fCoefficient = e_Value.attribute("Coefficient").toFloat(); //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
}
dv2->DO = e_Value.attribute("DO"); //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD>
dv2->DA = strDAName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//zw<7A>޸<EFBFBD> 2023 - 8 - 14 Ϊ<><CEAA>ʷ<EFBFBD><CAB7><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD> Value<75>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-BaseFlag LimitUp LimitDown
if (e_Value.attributes().contains("BaseFlag"))
{
dv2->BaseFlag = e_Value.attribute("BaseFlag");
if (dv2->BaseFlag == "1") {
dt->BaseFlag1++;
}
else {
dt->BaseFlag0++;
}
}
else
{
dt->BaseFlag0++;
dv2->BaseFlag = "0";
}
if (e_Value.attributes().contains("LimitUp"))
{
dv2->LimitUp = e_Value.attribute("LimitUp");
}
else
{
dv2->LimitUp = "not define";
}
if (e_Value.attributes().contains("LimitDown"))
{
dv2->LimitDown = e_Value.attribute("LimitDown");
}
else
{
dv2->LimitDown = "not define";
}
if (!e_Value.attribute("PltFlag").isEmpty() && e_Value.attribute("PltFlag") == "True") //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
dv2->bPlt = true; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
else
dv2->bPlt = false;//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!dv2->DO.isEmpty() && !dv2->DA.isEmpty()) //<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
dv2->strFullName = dv2->DO + "$" + dv2->DA;
else
dv2->strFullName = "not define";
sq->DataValueList.push_back(dv2); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>)
}
} //<2F><>ȡAB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>Value <20><><EFBFBD><EFBFBD>
}//<2F>ж<EFBFBD>node5ΪԪ<CEAA><D4AA> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD>AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD>Value<75>б<EFBFBD> <20><><EFBFBD><EFBFBD>
} //<2F><><EFBFBD><EFBFBD> AB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
}
}//<2F><>-<2D>ٶ<EFBFBD>ȡAB<41><42>BC<42><43>CA<43><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
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>
@@ -1078,9 +1733,32 @@ void print_interval(int flag,int interval) {
}
}
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>
/// <summary>
/// czy kafka<6B><61>json<6F>н<EFBFBD><D0BD>ߵ<EFBFBD>ѹת<D1B9><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
/// </summary>
/// <param name="pSequence"></param>
/// <returns></returns>
QString line_to_phasic(QString qstrSeq) {
if (qstrSeq == "A" || qstrSeq == "AB") {
return "A";
}
else if (qstrSeq == "B" || qstrSeq == "BC") {
return "B";
}
else if (qstrSeq == "C" || qstrSeq == "CA") {
return "C";
}
else {
return qstrSeq;
}
}
//20250214<31><34><EFBFBD>ӽ<EFBFBD><D3BD>ͽ<EFBFBD><CDBD>ߴ<EFBFBD><DFB4><EFBFBD>
int transfer_json_block_data(char v_wiring_type[], json_block_data *data) //json<6F><6E><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD> zw<7A>޸<EFBFBD> 2023-8-11 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>json<6F>ṹ Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
{
list<CTopic*> ctopic_list;
#if 0
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;
@@ -1089,6 +1767,34 @@ int transfer_json_block_data(json_block_data *data) //json
cout << "transfer_json_block_data not contain data->dev_type" << endl;
ctopic_list = topicList;
}
#endif
////lnk2024-8-15 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
if (strcmp(v_wiring_type, "01") == 0) //lnk2024-8-15 <20><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
{
cout << "report v_wiring_type is" << v_wiring_type << endl;
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;
}
}
else //lnk2024-8-15 <20><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
{
cout << "report v_wiring_type is" << v_wiring_type << endl;
if (xmlinfo_list2.contains(data->dev_type)) {
cout << "transfer_json_block_data contain data->dev_type" << endl;
ctopic_list = xmlinfo_list2[data->dev_type]->topicList;
}
else {
cout << "transfer_json_block_data not contain data->dev_type" << endl;
ctopic_list = topicList;
}
}
//list<CTopic*>* tmp;
bool shortjumpflag = false;
bool longjumpflag = false;
@@ -1160,7 +1866,7 @@ int transfer_json_block_data(json_block_data *data) //json
{
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
@@ -1277,7 +1983,7 @@ int transfer_json_block_data(json_block_data *data) //json
{
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
@@ -1414,7 +2120,7 @@ int transfer_json_block_data(json_block_data *data) //json
{
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
@@ -1694,7 +2400,7 @@ int transfer_json_block_data(json_block_data *data) //json
{
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
@@ -1808,7 +2514,7 @@ int transfer_json_block_data(json_block_data *data) //json
{
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
@@ -2104,7 +2810,7 @@ int transfer_json_block_data(json_block_data *data) //json
{
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
@@ -2221,7 +2927,7 @@ int transfer_json_block_data(json_block_data *data) //json
{
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
@@ -2356,7 +3062,7 @@ int transfer_json_block_data(json_block_data *data) //json
{
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>
KafkaData.strText.append(QString("\"%1\":{ ").arg(line_to_phasic(pSequence->strSeq))); //ƴ<><C6B4> json<6F><6E><EFBFBD><EFBFBD> A<><41>B<EFBFBD><42>C<EFBFBD><43>T<EFBFBD><54>
list<CDataValue*>::iterator dv = pSequence->DataValueList.begin(); //<2F>ޱ<EFBFBD><DEB1><EFBFBD> DataValueList
CDataValue* pDataValueBegin = *dv;
@@ -2750,6 +3456,9 @@ int transfer_json_block_data(json_block_data *data) //json
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
{
@@ -2936,6 +3645,33 @@ void Set_xml_databaseinfo(char* MODEL_ID, char* TMNL_TYPE, char* FILE_PATH, char
QDateTime time(QDate(year, month, day), QTime(hour, minute, second));
xmlinfo_list[type]->xmlbase.datetime = time;
cout << "##################################isdelta_flag is " << isdelta_flag << endl;
/*lnk2024-8-14 <20><><EFBFBD><EFBFBD>isdelta_flag ѡ<><D1A1>xmllist*/
if (isdelta_flag) {
cout << "xmllist2 create" << endl;
if (!xmlinfo_list2.contains(type))
{
Xmldata* config2 = new Xmldata();
xmlinfo_list2.insert(type, config2);
}
else
{
QDateTime time(QDate(year, month, day), QTime(hour, minute, second));
if (xmlinfo_list2[type]->xmlbase.datetime == time) {
xmlinfo_list2[type]->updataflag = false;
}
else {
xmlinfo_list2[type]->updataflag = true;
}
}
xmlinfo_list2[type]->xmlbase.MODEL_ID = id;
xmlinfo_list2[type]->xmlbase.TMNL_TYPE = type;
xmlinfo_list2[type]->xmlbase.FILE_PATH = filepath;
xmlinfo_list2[type]->xmlbase.FILE_NAME = name;
xmlinfo_list2[type]->xmlbase.datetime = time;
}
/*lnk2024-8-14*/
char file_name[256];
memset(file_name, 0, 256);
sprintf(file_name, "%s", FILE_NAME);
@@ -3006,7 +3742,10 @@ void Set_xml_nodeinfo()
{
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>
ParseXMLConfig2(0, &xmlcfg, &topicList, path); //<2F><><EFBFBD><EFBFBD> ParseXMLConfig() <20><><EFBFBD><EFBFBD>JiangSu_Config.xml<6D><6C><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
if (isdelta_flag) {
ParseXMLConfig2(1, &xmlcfg2, &topicList2, path); //lnk2024-8-13<31><33><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
}
inited = true;
}
@@ -3019,7 +3758,19 @@ void Set_xml_nodeinfo()
Xmldata* value2 = it2.value();
if (value2->updataflag == true) {
ParseXMLConfig2(&(value2->xmlcfg), &(value2->topicList), value2->xmlbase.MODEL_ID);
ParseXMLConfig2(0,&(value2->xmlcfg), &(value2->topicList), value2->xmlbase.MODEL_ID);
}
}
//lnk2024-8-14 ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
if (isdelta_flag) {
for (QMap<QString, Xmldata*>::iterator it3 = xmlinfo_list2.begin(); it3 != xmlinfo_list2.end(); ++it3)
{
QString key3 = it3.key();
Xmldata* value3 = it3.value(); //
if (value3->updataflag == true) {
ParseXMLConfig2(1, &(value3->xmlcfg), &(value3->topicList), value3->xmlbase.MODEL_ID);
}
}
}
}
@@ -3615,7 +4366,7 @@ void Set_xml_nodeinfo_one(char* dev_type)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>xmlcfg<66><67>topicListɾ<74><C9BE>
clearXmlConfigAndTopicList(xmlinfo_list[QString::fromUtf8(dev_type)]);
ret = ParseXMLConfig2(&(xmlinfo_list[QString::fromUtf8(dev_type)]->xmlcfg), &(xmlinfo_list[QString::fromUtf8(dev_type)]->topicList), xmlinfo_list[QString::fromUtf8(dev_type)]->xmlbase.MODEL_ID);
ret = ParseXMLConfig2(0,&(xmlinfo_list[QString::fromUtf8(dev_type)]->xmlcfg), &(xmlinfo_list[QString::fromUtf8(dev_type)]->topicList), xmlinfo_list[QString::fromUtf8(dev_type)]->xmlbase.MODEL_ID);
if(!ret)
{
std::cout << "!!!! this ledger xml config fail!!!!" << std::endl;
@@ -3626,6 +4377,26 @@ void Set_xml_nodeinfo_one(char* dev_type)
else{
std::cout << "xmlinfo_list not contain this devtype" << std::endl;
}
//<2F><><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD>
if(isdelta_flag){
if(xmlinfo_list2[QString::fromUtf8(dev_type)] != NULL){ //ԭ<><D4AD><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ľڵ<C4BD>
if(xmlinfo_list2[QString::fromUtf8(dev_type)]->updataflag == true){ //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>xmlcfg<66><67>topicListɾ<74><C9BE>
clearXmlConfigAndTopicList(xmlinfo_list2[QString::fromUtf8(dev_type)]);
ret = ParseXMLConfig2(1,&(xmlinfo_list2[QString::fromUtf8(dev_type)]->xmlcfg), &(xmlinfo_list2[QString::fromUtf8(dev_type)]->topicList), xmlinfo_list2[QString::fromUtf8(dev_type)]->xmlbase.MODEL_ID);
if(!ret)
{
std::cout << "!!!! this ledger xml config fail!!!!" << std::endl;
}
}
}
else{
std::cout << "xmlinfo_list2 not contain this devtype" << std::endl;
}
}
}
//4-<2D><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>ļ<EFBFBD>///////////////////////////////////