Сделал выдачу tasksAMM.xml из сервера по запросу GUI-клиента

This commit is contained in:
krivoshein
2025-01-21 12:36:24 +03:00
parent 1950690f82
commit 3baccee9b3
15 changed files with 117 additions and 81 deletions

View File

@@ -2,9 +2,9 @@
#include <QThread>
#include <QDir>
#include <QDomDocument>
#include <QMessageBox>
#include "instructor.h"
#include "tasksAmmFim.h"
#include "fimtaskswidget.h"
RecognizeSystem::RecognizeSystem(QObject *parent):
@@ -283,11 +283,24 @@ void RecognizeSystem::recognize(QTcpSocket *socket)
packetType == PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_AMM)
{
QByteArray array;
stream.startTransaction();
stream >> 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<TaskAmmFim> 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)

View File

@@ -49,8 +49,8 @@ signals:
void sigAnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms);
void sigAnswerQueryToDB_ListTasks(QList<Task> listTasks);
void sigAnswerQueryTasksXML_FIM(QList<TaskAmmFim> listTaskFim);
void sigAnswerQueryTasksXML_AMM(QList<TaskAmmFim> listTaskAmm);
void sigAnswerQueryTasksXML_FIM(QByteArray array);
void sigAnswerQueryTasksXML_AMM(QByteArray array);
private:
QList<QString> *folderList;

View File

@@ -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);

View File

@@ -98,14 +98,14 @@ void ConnectorToServer::SetConnectToServer()
emit sigSetConnect(dataParser->getServerSettings(),connectionThread);
}
QList<TaskAmmFim> ConnectorToServer::getListTaskFim()
QByteArray ConnectorToServer::getListTaskFimArray()
{
return listTaskFim;
return listTaskFimArray;
}
QList<TaskAmmFim> ConnectorToServer::getListTaskAmm()
QByteArray ConnectorToServer::getListTaskAmmArray()
{
return listTaskAmm;
return listTaskAmmArray;
}
QList<Instructor> ConnectorToServer::getListInstructors()
@@ -297,15 +297,15 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTasks(QList<Task> listTasks)
//emit signal_UpdateDB(false, true);
}
void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QList<TaskAmmFim> listTaskFim)
void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array)
{
this->listTaskFim = listTaskFim;
this->listTaskFimArray = array;
emit signal_UpdateTasksFIM();
}
void ConnectorToServer::slot_AnswerQueryTasksXML_AMM(QList<TaskAmmFim> listTaskAmm)
void ConnectorToServer::slot_AnswerQueryTasksXML_AMM(QByteArray array)
{
this->listTaskAmm = listTaskAmm;
this->listTaskAmmArray = array;
emit signal_UpdateTasksAMM();
}

View File

@@ -30,8 +30,8 @@ public:
void SetConnectToServer();
public:
QList<TaskAmmFim> getListTaskFim();
QList<TaskAmmFim> getListTaskAmm();
QByteArray getListTaskFimArray();
QByteArray getListTaskAmmArray();
public:
//Запросы к БД (локальной)
@@ -67,8 +67,8 @@ public slots:
void slot_AnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms);
void slot_AnswerQueryToDB_ListTasks(QList<Task> listTasks);
void slot_AnswerQueryTasksXML_FIM(QList<TaskAmmFim> listTaskFim);
void slot_AnswerQueryTasksXML_AMM(QList<TaskAmmFim> 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<Classroom> listClassrooms;
QList<Task> listTasks;
QList<TaskAmmFim> listTaskFim;
QList<TaskAmmFim> listTaskAmm;
QByteArray listTaskFimArray;
QByteArray listTaskAmmArray;
};
#endif // CONNECTORTOSERVER_H

View File

@@ -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");
}

View File

@@ -5,6 +5,7 @@
#include <QTreeWidget>
#include <QDomNode>
#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<Module*> listAllModules;
};
#endif // DOCTASKSWIDGET_H

View File

@@ -49,6 +49,17 @@
</item>
</layout>
</item>
<item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QToolButton" name="btnUpdateTasks">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>

View File

@@ -25,9 +25,9 @@ FIMtasksWidget::~FIMtasksWidget()
delete ui;
}
QList<TaskAmmFim> FIMtasksWidget::loadTasksAmmFimFromXML(QByteArray array)
void FIMtasksWidget::loadTasksAmmFimFromXML(QByteArray array)
{
QList<TaskAmmFim> listTaskAmmFim;
listTaskAmmFim.clear();
QDomDocument docTasksDOM;
@@ -35,11 +35,11 @@ QList<TaskAmmFim> 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<TaskAmmFim> FIMtasksWidget::loadTasksAmmFimFromXML(QByteArray array)
}
}while (! (taskElement = taskElement.nextSiblingElement()).isNull());
return listTaskAmmFim;
return;
}
void FIMtasksWidget::fillTree(QList<TaskAmmFim> 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()

View File

@@ -24,10 +24,10 @@ public:
~FIMtasksWidget();
public:
static QList<TaskAmmFim> loadTasksAmmFimFromXML(QByteArray array);
void loadTasksAmmFimFromXML(QByteArray array);
private:
void fillTree(QList<TaskAmmFim> listTaskAmmFim);
void fillTree();
void preparationTreeWidget();
void reSetHeadTreeWidget();
@@ -40,7 +40,7 @@ private:
public:
QString userName;
//QList<TaskAmmFim> listTaskAmmFim;
QList<TaskAmmFim> listTaskAmmFim;
private slots:
void on_btnUpdateTasks_clicked();

View File

@@ -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);

View File

@@ -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)

View File

@@ -355,17 +355,10 @@ QList<FileData>* 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()

View File

@@ -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);

View File

@@ -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();