From 3baccee9b34cce80fee5ad2faf273dbc25921c06 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Tue, 21 Jan 2025 12:36:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=B4=D0=B0=D1=87=D1=83=20tasksAMM.xml=20=D0=B8=D0=B7=20?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B0=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D1=83=20GUI-=D0=BA=D0=BB?= =?UTF-8?q?=D0=B8=D0=B5=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core/recognizesystem.cpp | 38 ++++++++++----- .../connectorToServer/Core/recognizesystem.h | 4 +- .../connectorToServer/Core/tools.cpp | 2 +- .../connectorToServer/connectortoserver.cpp | 16 +++---- .../connectorToServer/connectortoserver.h | 12 ++--- .../docTasks/doctaskswidget.cpp | 47 ++++++++++--------- .../docTasks/doctaskswidget.h | 10 ++-- .../docTasks/doctaskswidget.ui | 11 +++++ .../docTasks/fimtaskswidget.cpp | 17 ++++--- .../docTasks/fimtaskswidget.h | 6 +-- .../instructorsandtraineeswidget.cpp | 2 +- ServerLMS/Systems/processingsystem.cpp | 15 ++++-- ServerLMS/Systems/updatecontroller.cpp | 11 +---- ServerLMS/Systems/updatecontroller.h | 2 +- ServerLMS/clienthandler.cpp | 5 ++ 15 files changed, 117 insertions(+), 81 deletions(-) diff --git a/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp b/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp index 05adfa5..fd797f1 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp +++ b/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp @@ -2,9 +2,9 @@ #include #include #include +#include #include "instructor.h" #include "tasksAmmFim.h" -#include "fimtaskswidget.h" RecognizeSystem::RecognizeSystem(QObject *parent): @@ -282,12 +282,25 @@ void RecognizeSystem::recognize(QTcpSocket *socket) if(packetType == PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_FIM || packetType == PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_AMM) { - QByteArray array; - stream.startTransaction(); - stream >> array; + QByteArray array; + QString xmlFileName = ""; - if(!stream.commitTransaction()) - continue; + if(packetType == PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_FIM) + xmlFileName = "./AdditionalFiles/tasksFIM.xml"; + else + xmlFileName = "./AdditionalFiles/tasksAMM.xml"; + + QFile xmlInFile(xmlFileName); + if (!xmlInFile.open(QFile::ReadOnly | QFile::Text)) + { + QMessageBox::critical(nullptr, tr("Attention!"), tr("The file could not be opened ") + xmlFileName); + return; + } + else + { + array = xmlInFile.readAll(); + xmlInFile.close(); + } xmlParserQueryTasksXML(packetType, array); @@ -567,15 +580,14 @@ void RecognizeSystem::xmlParserQueryToDB(PacketType packetType, QByteArray array void RecognizeSystem::xmlParserQueryTasksXML(PacketType packetType, QByteArray array) { - QList listTaskAmmFim; - - //парсинг XML - listTaskAmmFim = FIMtasksWidget::loadTasksAmmFimFromXML(array); - if(packetType == TYPE_XMLANSWER_QUERY_TASKS_XML_FIM) - emit sigAnswerQueryTasksXML_FIM(listTaskAmmFim); + { + emit sigAnswerQueryTasksXML_FIM(array); + } else if(packetType == TYPE_XMLANSWER_QUERY_TASKS_XML_AMM) - emit sigAnswerQueryTasksXML_AMM(listTaskAmmFim); + { + emit sigAnswerQueryTasksXML_AMM(array); + } } void RecognizeSystem::checkAccessType(QString type) diff --git a/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.h b/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.h index a01e22d..e02a739 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.h +++ b/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.h @@ -49,8 +49,8 @@ signals: void sigAnswerQueryToDB_ListClassrooms(QList listClassrooms); void sigAnswerQueryToDB_ListTasks(QList listTasks); - void sigAnswerQueryTasksXML_FIM(QList listTaskFim); - void sigAnswerQueryTasksXML_AMM(QList listTaskAmm); + void sigAnswerQueryTasksXML_FIM(QByteArray array); + void sigAnswerQueryTasksXML_AMM(QByteArray array); private: QList *folderList; diff --git a/InstructorsAndTrainees/connectorToServer/Core/tools.cpp b/InstructorsAndTrainees/connectorToServer/Core/tools.cpp index 1461a9d..2d933c9 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/tools.cpp +++ b/InstructorsAndTrainees/connectorToServer/Core/tools.cpp @@ -27,7 +27,7 @@ QString Tools::createLocalPath(QString path) QString Tools::createFullPath(QString path) { QString fullPath; - qint8 pos = path.indexOf("Application"); + qint8 pos = path.indexOf("AdditionalFiles"); QString localPath = path.remove(0,--pos); diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp index de0f798..719e864 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp @@ -98,14 +98,14 @@ void ConnectorToServer::SetConnectToServer() emit sigSetConnect(dataParser->getServerSettings(),connectionThread); } -QList ConnectorToServer::getListTaskFim() +QByteArray ConnectorToServer::getListTaskFimArray() { - return listTaskFim; + return listTaskFimArray; } -QList ConnectorToServer::getListTaskAmm() +QByteArray ConnectorToServer::getListTaskAmmArray() { - return listTaskAmm; + return listTaskAmmArray; } QList ConnectorToServer::getListInstructors() @@ -297,15 +297,15 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTasks(QList listTasks) //emit signal_UpdateDB(false, true); } -void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QList listTaskFim) +void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array) { - this->listTaskFim = listTaskFim; + this->listTaskFimArray = array; emit signal_UpdateTasksFIM(); } -void ConnectorToServer::slot_AnswerQueryTasksXML_AMM(QList listTaskAmm) +void ConnectorToServer::slot_AnswerQueryTasksXML_AMM(QByteArray array) { - this->listTaskAmm = listTaskAmm; + this->listTaskAmmArray = array; emit signal_UpdateTasksAMM(); } diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.h b/InstructorsAndTrainees/connectorToServer/connectortoserver.h index 9f158c7..4152a75 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.h +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.h @@ -30,8 +30,8 @@ public: void SetConnectToServer(); public: - QList getListTaskFim(); - QList getListTaskAmm(); + QByteArray getListTaskFimArray(); + QByteArray getListTaskAmmArray(); public: //Запросы к БД (локальной) @@ -67,8 +67,8 @@ public slots: void slot_AnswerQueryToDB_ListClassrooms(QList listClassrooms); void slot_AnswerQueryToDB_ListTasks(QList listTasks); - void slot_AnswerQueryTasksXML_FIM(QList listTaskFim); - void slot_AnswerQueryTasksXML_AMM(QList listTaskAmm); + void slot_AnswerQueryTasksXML_FIM(QByteArray array); + void slot_AnswerQueryTasksXML_AMM(QByteArray array); void slot_msgToClientReady(QString login, QString text); @@ -115,8 +115,8 @@ private: QList listClassrooms; QList listTasks; - QList listTaskFim; - QList listTaskAmm; + QByteArray listTaskFimArray; + QByteArray listTaskAmmArray; }; #endif // CONNECTORTOSERVER_H diff --git a/InstructorsAndTrainees/docTasks/doctaskswidget.cpp b/InstructorsAndTrainees/docTasks/doctaskswidget.cpp index fe44cb0..91a6bef 100644 --- a/InstructorsAndTrainees/docTasks/doctaskswidget.cpp +++ b/InstructorsAndTrainees/docTasks/doctaskswidget.cpp @@ -5,9 +5,10 @@ #include "doctaskswidget.h" #include "ui_doctaskswidget.h" -DocTasksWidget::DocTasksWidget(QWidget *parent) : +DocTasksWidget::DocTasksWidget(ConnectorToServer* connectorToServer, QWidget *parent) : QWidget(parent), - ui(new Ui::DocTasksWidget) + ui(new Ui::DocTasksWidget), + connectorToServer(connectorToServer) { ui->setupUi(this); @@ -19,9 +20,9 @@ DocTasksWidget::DocTasksWidget(QWidget *parent) : preparationTreeWidget(); - loadDocTasksFromXML(); + //loadDocTasksFromXML(); - updateTreeWidget(); + //updateTreeWidget(); } DocTasksWidget::~DocTasksWidget() @@ -72,7 +73,10 @@ void DocTasksWidget::loadTasksAMM() //Обновление дерева treeWidget->clear(); - //TODO собственно обновление дерева + QByteArray array = connectorToServer->getListTaskAmmArray(); + loadDocTasksFromXML(array); + + updateTreeWidget(); } void DocTasksWidget::domElementParser(QDomElement element, Module* moduleParent) @@ -176,29 +180,21 @@ void DocTasksWidget::domElementParser(QDomElement element, Module* moduleParent) }while (! (childElement = childElement.nextSiblingElement()).isNull()); } -void DocTasksWidget::loadDocTasksFromXML() +void DocTasksWidget::loadDocTasksFromXML(QByteArray array) { + deleteAllModuls(); + QDomDocument docTasksDOM; - QString xmlFileName = "./docs.xml"; - QFile xmlInFile(xmlFileName); - if (!xmlInFile.open(QFile::ReadOnly | QFile::Text)) - { - QMessageBox::critical(nullptr, tr("Attention!"), tr("The file could not be opened ") + xmlFileName); + + docTasksDOM.setContent(array); + + QDomElement manifestElement = docTasksDOM.firstChildElement("manifest"); + if(manifestElement.isNull()) return; - } - else - { - docTasksDOM.setContent(xmlInFile.readAll()); - xmlInFile.close(); - QDomElement manifestElement = docTasksDOM.firstChildElement("manifest"); - if(manifestElement.isNull()) - return; + //deleteAllModuls(); - //deleteAllModuls(); - - domElementParser(manifestElement, nullptr); - } + domElementParser(manifestElement, nullptr); } void DocTasksWidget::deleteAllModuls() @@ -297,3 +293,8 @@ void DocTasksWidget::addModuleToTreeWidget(Module *module, QTreeWidgetItem* pare itemModule->setText(ColumnsTree::clmn_ID, ID); } + +void DocTasksWidget::on_btnUpdateTasks_clicked() +{ + connectorToServer->sendQueryTasksXML("amm"); +} diff --git a/InstructorsAndTrainees/docTasks/doctaskswidget.h b/InstructorsAndTrainees/docTasks/doctaskswidget.h index ed7b690..abfa327 100644 --- a/InstructorsAndTrainees/docTasks/doctaskswidget.h +++ b/InstructorsAndTrainees/docTasks/doctaskswidget.h @@ -5,6 +5,7 @@ #include #include #include "module.h" +#include "connectortoserver.h" namespace Ui { class DocTasksWidget; @@ -21,19 +22,21 @@ private: }; public: - explicit DocTasksWidget(QWidget *parent = nullptr); + explicit DocTasksWidget(ConnectorToServer* connectorToServer, QWidget *parent = nullptr); ~DocTasksWidget(); private Q_SLOTS: void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); + void on_btnUpdateTasks_clicked(); + public Q_SLOTS: //Слот обработки сигнала необходимости обновления интерфейса void slot_NeedUpdateUI(); private: + void loadDocTasksFromXML(QByteArray array); void domElementParser(QDomElement element, Module* moduleParent); - void loadDocTasksFromXML(); void deleteAllModuls(); Module* searchModuleByID(int id); @@ -46,10 +49,11 @@ private: private: Ui::DocTasksWidget *ui; + ConnectorToServer* connectorToServer; QTreeWidget* treeWidget; +private: QList listAllModules; - }; #endif // DOCTASKSWIDGET_H diff --git a/InstructorsAndTrainees/docTasks/doctaskswidget.ui b/InstructorsAndTrainees/docTasks/doctaskswidget.ui index cefa158..1aa3eb6 100644 --- a/InstructorsAndTrainees/docTasks/doctaskswidget.ui +++ b/InstructorsAndTrainees/docTasks/doctaskswidget.ui @@ -49,6 +49,17 @@ + + + + + + ... + + + + + diff --git a/InstructorsAndTrainees/docTasks/fimtaskswidget.cpp b/InstructorsAndTrainees/docTasks/fimtaskswidget.cpp index a726b85..8f46ced 100644 --- a/InstructorsAndTrainees/docTasks/fimtaskswidget.cpp +++ b/InstructorsAndTrainees/docTasks/fimtaskswidget.cpp @@ -25,9 +25,9 @@ FIMtasksWidget::~FIMtasksWidget() delete ui; } -QList FIMtasksWidget::loadTasksAmmFimFromXML(QByteArray array) +void FIMtasksWidget::loadTasksAmmFimFromXML(QByteArray array) { - QList listTaskAmmFim; + listTaskAmmFim.clear(); QDomDocument docTasksDOM; @@ -35,11 +35,11 @@ QList FIMtasksWidget::loadTasksAmmFimFromXML(QByteArray array) QDomElement RRJTasksElement = docTasksDOM.firstChildElement("RRJTasks"); if(RRJTasksElement.isNull()) - return listTaskAmmFim; + return; QDomElement taskElement = RRJTasksElement.firstChildElement(); if(taskElement.isNull()) - return listTaskAmmFim; + return; do {/*task*/ @@ -101,10 +101,10 @@ QList FIMtasksWidget::loadTasksAmmFimFromXML(QByteArray array) } }while (! (taskElement = taskElement.nextSiblingElement()).isNull()); - return listTaskAmmFim; + return; } -void FIMtasksWidget::fillTree(QList listTaskAmmFim) +void FIMtasksWidget::fillTree() { for(int i = 0; i < listTaskAmmFim.count(); i++) {/*Задачи*/ @@ -178,8 +178,11 @@ void FIMtasksWidget::loadTasksFIM() //Обновление дерева ui->treeWidget->clear(); + QByteArray array = connectorToServer->getListTaskFimArray(); + loadTasksAmmFimFromXML(array); + //собственно обновление дерева - fillTree(connectorToServer->getListTaskFim()); + fillTree(); } void FIMtasksWidget::on_btnUpdateTasks_clicked() diff --git a/InstructorsAndTrainees/docTasks/fimtaskswidget.h b/InstructorsAndTrainees/docTasks/fimtaskswidget.h index a01b6cb..28b5686 100644 --- a/InstructorsAndTrainees/docTasks/fimtaskswidget.h +++ b/InstructorsAndTrainees/docTasks/fimtaskswidget.h @@ -24,10 +24,10 @@ public: ~FIMtasksWidget(); public: - static QList loadTasksAmmFimFromXML(QByteArray array); + void loadTasksAmmFimFromXML(QByteArray array); private: - void fillTree(QList listTaskAmmFim); + void fillTree(); void preparationTreeWidget(); void reSetHeadTreeWidget(); @@ -40,7 +40,7 @@ private: public: QString userName; - //QList listTaskAmmFim; + QList listTaskAmmFim; private slots: void on_btnUpdateTasks_clicked(); diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index d849704..46ebed5 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -56,7 +56,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : connect(connectorToServer,&ConnectorToServer::signal_msgFromClientReady,messangerWidget,&MessangerWidget::slot_msgFromClientReady); - docTasksWidget = new DocTasksWidget(this); + docTasksWidget = new DocTasksWidget(connectorToServer, this); fIMtasksWidget = new FIMtasksWidget(connectorToServer, this); connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIM, fIMtasksWidget, &FIMtasksWidget::slot_NeedUpdateUI); diff --git a/ServerLMS/Systems/processingsystem.cpp b/ServerLMS/Systems/processingsystem.cpp index 552e634..4a1ccdb 100644 --- a/ServerLMS/Systems/processingsystem.cpp +++ b/ServerLMS/Systems/processingsystem.cpp @@ -234,14 +234,21 @@ void ProcessingSystem::processingClientQueryTasksXML(ClientHandler *client, Clie QByteArray arrayAnswer; QString nameFile = ""; + QString pathFile = ""; if(clientQueryTasksXML.Type == "fim") + { nameFile = tasksFIMfileName; + pathFile = updateController->getPathAdditionalFile(nameFile); + client->sendFileBlock(pathFile); + client->sendPacketType(PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_FIM); + } else if(clientQueryTasksXML.Type == "amm") + { nameFile = tasksAMMfileName; - - arrayAnswer = updateController->getAdditionalFile(nameFile); - - client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_FIM); + pathFile = updateController->getPathAdditionalFile(nameFile); + client->sendFileBlock(pathFile); + client->sendPacketType(PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_AMM); + } } void ProcessingSystem::processingToClientMessage(ClientHandler *client, ToClientMessage toClientMessage) diff --git a/ServerLMS/Systems/updatecontroller.cpp b/ServerLMS/Systems/updatecontroller.cpp index 850eee6..22ec26f 100644 --- a/ServerLMS/Systems/updatecontroller.cpp +++ b/ServerLMS/Systems/updatecontroller.cpp @@ -355,17 +355,10 @@ QList* UpdateController::calculateHash(QString path) return files; } -QByteArray UpdateController::getAdditionalFile(QString name) +QString UpdateController::getPathAdditionalFile(QString name) { QString path = Tools::createSharedPath("/" + assetManager->getCurrentVersionData()->getViewName() + "/AdditionalFiles" + name); - QFile addFile(path); - QByteArray array; - if(addFile.open(QIODevice::ReadOnly)){ - array = addFile.readAll(); - addFile.close(); - } - - return array; + return path; } QByteArray UpdateController::getLocalHash() diff --git a/ServerLMS/Systems/updatecontroller.h b/ServerLMS/Systems/updatecontroller.h index 81232fc..01d2a7c 100644 --- a/ServerLMS/Systems/updatecontroller.h +++ b/ServerLMS/Systems/updatecontroller.h @@ -56,7 +56,7 @@ public: void saveVersionToFile(StreamingVersionData *streamingVersion); void xmlFileDataParse(QByteArray array); - QByteArray getAdditionalFile(QString name); + QString getPathAdditionalFile(QString name); public slots: void changeAssetVersion(QString versionName); diff --git a/ServerLMS/clienthandler.cpp b/ServerLMS/clienthandler.cpp index 2ab918e..bf91696 100644 --- a/ServerLMS/clienthandler.cpp +++ b/ServerLMS/clienthandler.cpp @@ -102,6 +102,11 @@ void ClientHandler::sendXmlAnswer(QByteArray array, PacketType packetType) emit sigSendXmlAnswer(array, packetType); } +void ClientHandler::sendFileBlock(QString path) +{ + emit sigFileBlock(path); +} + bool ClientHandler::getIsSendStopped() { return emit sigGetIsSendStopped();