mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
в GUI приходит ответ с перечнем ПП от Сервера
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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();
|
||||
};
|
||||
|
||||
29
ServerLMS/Systems/Parsers/docsanswerparser.cpp
Normal file
29
ServerLMS/Systems/Parsers/docsanswerparser.cpp
Normal 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();
|
||||
}
|
||||
23
ServerLMS/Systems/Parsers/docsanswerparser.h
Normal file
23
ServerLMS/Systems/Parsers/docsanswerparser.h
Normal 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
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -281,6 +281,12 @@ ModeList DocsUpdater::parseCanplay(QString canplay)
|
||||
return modeList;
|
||||
}
|
||||
|
||||
QString DocsUpdater::buildCanplay(ModeList modeList)
|
||||
{
|
||||
QString canplay = QString("%1/%2/%3/%4").arg(modeList.demo?"+":"-", modeList.train?"+":"-", modeList.exam?"+":"-", modeList.autoM?"+":"-");
|
||||
return canplay;
|
||||
}
|
||||
|
||||
bool DocsUpdater::processingScenXML(const QString dmCode, QString &canplay, QList<SubProc> &listSubProc)
|
||||
{
|
||||
listSubProc.clear();
|
||||
|
||||
@@ -29,10 +29,12 @@ public:
|
||||
|
||||
bool updateDocsXML();
|
||||
|
||||
static ModeList parseCanplay(QString canplay);
|
||||
static QString buildCanplay(ModeList modeList);
|
||||
|
||||
private:
|
||||
void domElementParserAMM(QDomElement element, Module* moduleParent);
|
||||
void deleteAllModulsAMM();
|
||||
ModeList parseCanplay(QString canplay);
|
||||
void deleteAllModulsAMM();
|
||||
bool processingScenXML(const QString dmCode, QString& canplay, QList<SubProc>& listSubProc);
|
||||
void selectSubProc(QDomElement& modeElement, QList<SubProc>& listSubProc);
|
||||
DM* getDMmoduleByDMcode(QString dmCode);
|
||||
|
||||
@@ -523,6 +523,18 @@ void ProcessingSystem::processingClientQueryTasksXML(ClientHandler *client, Clie
|
||||
}
|
||||
}
|
||||
|
||||
void ProcessingSystem::processingClientQueryListSubProc(ClientHandler *client, QString dmCode)
|
||||
{
|
||||
QList<SubProc> list = docsUpdater->getListSubProcForDMcode(dmCode);
|
||||
|
||||
QByteArray arrayAnswer = dataParser->getDocsAnswerParser()->listSubProc(list);
|
||||
//client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_LIST_SUB_PROC_AMM);
|
||||
client->sendFileBlockByteArray(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_LIST_SUB_PROC_AMM);
|
||||
|
||||
int i = 0;
|
||||
i++;
|
||||
}
|
||||
|
||||
void ProcessingSystem::processingSendMessage(ClientMessage clientMessage)
|
||||
{
|
||||
chatSystem->sendMessage(clientMessage);
|
||||
|
||||
@@ -38,6 +38,7 @@ public:
|
||||
void processingClientBlockAuth(ClientHandler *client, bool block);
|
||||
void processingClientQueryToDB(ClientHandler *client, ClientQueryToDB clientQueryToDB, int id = 0, void* data = nullptr);
|
||||
void processingClientQueryTasksXML(ClientHandler *client, ClientQueryTasksXML clientQueryTasksXML);
|
||||
void processingClientQueryListSubProc(ClientHandler *client, QString dmCode);
|
||||
|
||||
void processingSendMessage(ClientMessage clientMessage);
|
||||
void processingClientNotify(ClientHandler *client, ClientNotify clientNotify);
|
||||
|
||||
Reference in New Issue
Block a user