в GUI приходит ответ с перечнем ПП от Сервера

This commit is contained in:
2025-11-17 10:22:02 +03:00
parent aa4972c3a5
commit 0c7d84ec84
21 changed files with 324 additions and 190 deletions

View File

@@ -15,6 +15,8 @@ QObject(parent)
dbAnswer = new DBAnswerParser;
dbAnswer->initialize(this);
docsAnswer = new DocsAnswerParser;
processParser = new ProcessParser;
processParser->initialize(processingSystem);
@@ -120,9 +122,18 @@ ProcessParser *DataParser::getProcessParser() const
return processParser;
}
DocsAnswerParser *DataParser::getDocsAnswerParser() const
{
return docsAnswer;
}
DataParser::~DataParser()
{
delete clientAnswer;
delete dbAnswer;
delete docsAnswer;
delete processParser;
delete mutex;
}

View File

@@ -7,6 +7,7 @@
#include "Systems/logger.h"
#include "Systems/Parsers/clientanswerparser.h"
#include "dbanswerparser.h"
#include "docsanswerparser.h"
#include "processparser.h"
#include "serverlmswidget.h"
@@ -23,6 +24,7 @@ class ClientHandler;
class AssetsManager;
class ClientAnswerParser;
class DBAnswerParser;
class DocsAnswerParser;
class ProcessParser;
class DataParser : public QObject
@@ -41,6 +43,7 @@ public:
ClientAnswerParser *ClientAnswer() const;
DBAnswerParser *DbAnswer() const;
ProcessParser *getProcessParser() const;
DocsAnswerParser *getDocsAnswerParser() const;
signals:
void sigLogMessage(QString log);
@@ -53,6 +56,7 @@ private:
AssetsManager *assetsManager;
ClientAnswerParser *clientAnswer;
DBAnswerParser *dbAnswer;
DocsAnswerParser* docsAnswer;
ProcessParser *processParser;
QByteArray readTempFile();
};

View File

@@ -0,0 +1,29 @@
#include "docsanswerparser.h"
#include "docsupdater.h"
DocsAnswerParser::DocsAnswerParser(QObject *parent) : QObject(parent)
{
}
QByteArray DocsAnswerParser::listSubProc(QList<SubProc> list)
{
QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListSubProc.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListSubProc");
for(SubProc subProc : list)
{
QDomNode subProcNode = commonDOM.createElement("SubProc");
listNode.appendChild(subProcNode);
subProcNode.toElement().setAttribute("dmCode", subProc.dmCode);
subProcNode.toElement().setAttribute("title", subProc.title);
subProcNode.toElement().setAttribute("canplay", DocsUpdater::buildCanplay(subProc.modeList));
}
Tools::saveDOMtoXML("ListSubProc.xml", &commonDOM);
return commonDOM.toByteArray();
}

View File

@@ -0,0 +1,23 @@
#ifndef DOCSANSWERPARSER_H
#define DOCSANSWERPARSER_H
#include <QObject>
#include <QList>
#include "docsupdater.h"
struct SubProc;
class DocsAnswerParser : public QObject
{
Q_OBJECT
public:
explicit DocsAnswerParser(QObject *parent = nullptr);
public:
QByteArray listSubProc(QList<SubProc> list);
signals:
};
#endif // DOCSANSWERPARSER_H

View File

@@ -44,6 +44,11 @@ void ProcessParser::slot_read(ClientHandler *client, QByteArray array)
queryTasksXML(xmlReader,client);
}
else if(xmlReader.name() == "QueryListSubProc")
{//Запрос списка подпроцедур
queryListSubProc(xmlReader,client);
}
else if(xmlReader.name() == "ClientMessage")
{//Сообщение от клиента
@@ -504,6 +509,24 @@ void ProcessParser::queryTasksXML(QXmlStreamReader &xmlReader, ClientHandler *cl
processingSystem->processingClientQueryTasksXML(client, clientQueryTasksXML);
}
void ProcessParser::queryListSubProc(QXmlStreamReader &xmlReader, ClientHandler *client)
{
QString dmCode = "";
/*Перебираем все атрибуты тега*/
foreach(const QXmlStreamAttribute &attr, xmlReader.attributes())
{
QString name = attr.name().toString();
QString value = attr.value().toString();
//addTextToLogger(name + ": " + value);
if(name == "dmCode")
dmCode = value;
}
processingSystem->processingClientQueryListSubProc(client, dmCode);
}
void ProcessParser::clientMessage(QXmlStreamReader &xmlReader,ClientHandler *client)
{
ClientMessage clientMessage;

View File

@@ -29,6 +29,7 @@ private:
void toClientMessage(QXmlStreamReader &xmlReader,ClientHandler *client);
void queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client, QByteArray array = QByteArray());
void queryTasksXML(QXmlStreamReader &xmlReader,ClientHandler *client);
void queryListSubProc(QXmlStreamReader &xmlReader,ClientHandler *client);
void clientMessage(QXmlStreamReader &xmlReader,ClientHandler *client);
void clientNotify(QXmlStreamReader &xmlReader,ClientHandler *client);
void clientDataInfo(QXmlStreamReader &xmlReader, ClientHandler *client);