Индикация и возм обновл docs из ГУИ

This commit is contained in:
2025-11-12 15:22:15 +03:00
parent 650b0525a3
commit 98821a7533
22 changed files with 468 additions and 269 deletions

View File

@@ -38,6 +38,9 @@ enum PacketType
TYPE_XMLANSWER_QUERY_TASKS_XML_FIM = 130,
TYPE_XMLANSWER_QUERY_TASKS_XML_AMM = 131,
//оповещение об изменении docs.xml
TYPE_XMLANSWER_DOCS_CHANGED = 132,
//ответы по обновлениям
HASH_READY = 150,
CHANGE_DATA_VERSION = 151,

View File

@@ -141,3 +141,30 @@ void CommonClientHandler::slot_sendTaskToClient(QString fullNameClient,QString t
}
}
void CommonClientHandler::slot_DocsChanged()
{
//Проходим все открытые сокеты
foreach(int idSocket, clientsMap->keys())
{
ClientHandler *handler = clientsMap->value(idSocket);
//Проверяем, есть ли клиенты TYPE_GUI
if(handler->getClient()->getTypeClient() == TypeClientAutorization::TYPE_GUI)
{//Отправляем этому клиенту оповещение об изменении docs.xml
/*
ClientQueryTasksXML clientQueryTasksXML;
clientQueryTasksXML.Type = "amm";
processingSystem->processingClientQueryTasksXML(handler, clientQueryTasksXML);
*/
handler->sendPacketType(PacketType::TYPE_XMLANSWER_DOCS_CHANGED);
}
if(handler->getClient()->getClientType() == TypeClientAutorization::TYPE_UNITY_CLIENT)
{
handler->sendPacketType(PacketType::TYPE_XMLANSWER_DOCS_CHANGED);
}
}
}

View File

@@ -25,6 +25,8 @@ public:
void slot_sendPacketToAllClients(PacketType packetType);
bool slotSendMessage(QString loginFrom, QString loginTo, QString text);
void slot_sendTaskToClient(QString fullNameClient, QString textTask);
void slot_DocsChanged();
signals:
void sigSendToLogger(QString text);
private:

View File

@@ -16,6 +16,16 @@ DocsUpdater::~DocsUpdater()
}
void DocsUpdater::lockAccessToDocs()
{
mtxAccess.lock();
}
void DocsUpdater::unLockAccessToDocs()
{
mtxAccess.unlock();
}
bool DocsUpdater::slot_update()
{
QMutexLocker locker(&mtxAccess);
@@ -39,6 +49,7 @@ bool DocsUpdater::slot_update()
if(! Tools::saveDOMtoXML(pathDocsFile, &docTasksDOM))
return false;
//emit signal_DocsChanged();
return true;
}

View File

@@ -13,6 +13,9 @@ class DocsUpdater : public QObject
public:
DocsUpdater(UpdateController* updateController, QObject *parent = nullptr);
~DocsUpdater();
public:
void lockAccessToDocs();
void unLockAccessToDocs();
public slots:
bool slot_update();

View File

@@ -3,13 +3,15 @@
#include <clienthandler.h>
ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, QObject *parent):
ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, DocsUpdater* docsUpdater, QObject *parent):
QObject(parent),
updateController(nullptr),
docsUpdater(nullptr),
providerDBLMS(nullptr)
{
this->providerDBLMS = providerDBLMS;
this->updateController = updateController;
this->docsUpdater = docsUpdater;
}
void ProcessingSystem::initialize(MultiThreadServer *server, DataParser *dataParser,
@@ -514,8 +516,10 @@ void ProcessingSystem::processingClientQueryTasksXML(ClientHandler *client, Clie
{
nameFile = tasksAMMfileName;
pathFile = updateController->getPathAdditionalFile(nameFile);
docsUpdater->lockAccessToDocs();
client->sendFileBlock(pathFile);
client->sendPacketType(PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_AMM);
docsUpdater->unLockAccessToDocs();
}
}

View File

@@ -10,6 +10,7 @@
//#include "instructorsandtraineeswidget.h"
#include "chatsystem.h"
#include "providerdblms.h"
#include "docsupdater.h"
class SendSystem;
class ServerLMSWidget;
@@ -24,7 +25,7 @@ class ProcessingSystem : public QObject
{
Q_OBJECT
public:
explicit ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, QObject *parent = nullptr);
explicit ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, DocsUpdater* docsUpdater, QObject *parent = nullptr);
void initialize(MultiThreadServer *server,
DataParser* dataParser,
@@ -70,6 +71,7 @@ private:
MultiThreadServer *server;
DataParser *dataParser;
UpdateController *updateController;
DocsUpdater* docsUpdater;
ProviderDBLMS* providerDBLMS;
ChatSystem *chatSystem;
void sendTaskListToUnity(ClientHandler *client);

View File

@@ -119,6 +119,7 @@ void ServerLMSWidget::slot_UpdateDocs()
{
QApplication::setOverrideCursor(Qt::WaitCursor);
emit signal_DocsUpdaterUpdate();
emit signal_DocsChanged();
QApplication::restoreOverrideCursor();
}
@@ -300,12 +301,16 @@ void ServerLMSWidget::startInitialization()
updateController = new UpdateController;
updateController->moveToThread(updateThread);
processingSystem = new ProcessingSystem(providerDBLMS, updateController);
//processingSystem->moveToThread(updateThread);
docsUpdater = new DocsUpdater(updateController, this);
connect(this, &ServerLMSWidget::signal_DocsUpdaterUpdate, docsUpdater, &DocsUpdater::slot_update,Qt::DirectConnection);
processingSystem = new ProcessingSystem(providerDBLMS, updateController, docsUpdater);
dataParser = new DataParser(assetsManager,processingSystem);
commonClientHandler = new CommonClientHandler;
connect(this,&ServerLMSWidget::signal_DocsChanged,commonClientHandler, &CommonClientHandler::slot_DocsChanged);
server = new MultiThreadServer(this,updateController,processingSystem,dataParser,6000);
loggerThread->start();
@@ -326,9 +331,6 @@ void ServerLMSWidget::startInitialization()
emit sigUpdateController(commonClientHandler,dataParser,assetsManager);
docsUpdater = new DocsUpdater(updateController, this);
connect(this, &ServerLMSWidget::signal_DocsUpdaterUpdate, docsUpdater, &DocsUpdater::slot_update,Qt::DirectConnection);
docsUpdater->moveToThread(updateThread);
slot_UpdateDocs();
ui->btnStopServer->setEnabled(false);

View File

@@ -80,6 +80,8 @@ signals:
void signal_DocsUpdaterUpdate();
void signal_DocsChanged();
public slots:
void slot_LanguageChanged(QString language);
void slot_UpdateListClients();

View File

@@ -349,7 +349,7 @@
<string/>
</property>
<property name="pixmap">
<pixmap resource="ServerLMS.qrc">:/resources/icons/open.png</pixmap>
<pixmap resource="ServerLMS.qrc">:/resources/icons/lock.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>