Merge branch 'DEV' into CFI-Update

# Conflicts:
#	LibServer/serverlmswidget.cpp
This commit is contained in:
semenov
2026-01-28 17:06:20 +03:00
24 changed files with 694 additions and 39 deletions

View File

@@ -15,7 +15,7 @@ void DBAnswerParser::initialize(DataParser *dataParser)
QByteArray DBAnswerParser::listInstructors(bool result, QList<Instructor> *listInstructors)
{
QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListInstructors.xml", &commonDOM))
if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListInstructors.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListInstructors");
@@ -34,7 +34,7 @@ QByteArray DBAnswerParser::listInstructors(bool result, QList<Instructor> *listI
instructorNode.toElement().setAttribute("logged_in", instructor.getLoggedIn());
}
Tools::saveDOMtoXML("ListInstructors.xml", &commonDOM);
Tools::saveDOMtoFileXML("ListInstructors.xml", &commonDOM);
return commonDOM.toByteArray();
}
@@ -42,7 +42,7 @@ QByteArray DBAnswerParser::listInstructors(bool result, QList<Instructor> *listI
QByteArray DBAnswerParser::listGroups(bool result, QList<Group> *listGroups)
{
QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListGroups.xml", &commonDOM))
if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListGroups.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListGroups");
@@ -56,7 +56,7 @@ QByteArray DBAnswerParser::listGroups(bool result, QList<Group> *listGroups)
groupNode.toElement().setAttribute("name", group.getName());
}
Tools::saveDOMtoXML("ListGroups.xml", &commonDOM);
Tools::saveDOMtoFileXML("ListGroups.xml", &commonDOM);
return commonDOM.toByteArray();
}
@@ -64,7 +64,7 @@ QByteArray DBAnswerParser::listGroups(bool result, QList<Group> *listGroups)
QByteArray DBAnswerParser::listTrainees(bool result, QList<Trainee> *listTrainees)
{
QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListTrainees.xml", &commonDOM))
if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListTrainees.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListTrainees");
@@ -95,7 +95,7 @@ QByteArray DBAnswerParser::listTrainees(bool result, QList<Trainee> *listTrainee
timingNode.toElement().setAttribute("operatingTime", timing.getOperatingTimeS());
}
Tools::saveDOMtoXML("ListTrainees.xml", &commonDOM);
Tools::saveDOMtoFileXML("ListTrainees.xml", &commonDOM);
return commonDOM.toByteArray();
}
@@ -142,7 +142,7 @@ QByteArray DBAnswerParser::listContacts(bool result, QList<ContactModel> *listCo
QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList<TaskAmmFim> *listTasks, int trainee_id, bool full_list)
{
QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListTasksAMM.xml", &commonDOM))
if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListTasksAMM.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListTasksAMM");
@@ -173,7 +173,7 @@ QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList<TaskAmmFim>
}
}
Tools::saveDOMtoXML("ListTasksAMM.xml", &commonDOM);
Tools::saveDOMtoFileXML("ListTasksAMM.xml", &commonDOM);
return commonDOM.toByteArray();
}
@@ -181,7 +181,7 @@ QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList<TaskAmmFim>
QByteArray DBAnswerParser::listTasksFIMofTrainee(bool result, QList<TaskAmmFim> *listTasks, int trainee_id, bool full_list)
{
QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListTasksFIM.xml", &commonDOM))
if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListTasksFIM.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListTasksFIM");
@@ -257,7 +257,7 @@ QByteArray DBAnswerParser::listTasksFIMofTrainee(bool result, QList<TaskAmmFim>
}
}
Tools::saveDOMtoXML("ListTasksFIM.xml", &commonDOM);
Tools::saveDOMtoFileXML("ListTasksFIM.xml", &commonDOM);
return commonDOM.toByteArray();
}

View File

@@ -9,7 +9,7 @@ DocsAnswerParser::DocsAnswerParser(QObject *parent) : QObject(parent)
QByteArray DocsAnswerParser::listSubProc(QList<SubProc> list, QString dmCode)
{
QDomDocument commonDOM;
if(! Tools::loadXMLtoDOM(":/resources/blankXML/ListSubProc.xml", &commonDOM))
if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListSubProc.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListSubProc");
@@ -24,7 +24,7 @@ QByteArray DocsAnswerParser::listSubProc(QList<SubProc> list, QString dmCode)
subProcNode.toElement().setAttribute("canplay", subProc.getModeListStr());
}
Tools::saveDOMtoXML("ListSubProc.xml", &commonDOM);
Tools::saveDOMtoFileXML("ListSubProc.xml", &commonDOM);
return commonDOM.toByteArray();
}

View File

@@ -105,17 +105,26 @@ void CommonClientHandler::slot_StatusTasksFIMofTraineeChanged(int trainee_id)
}*/
}
void CommonClientHandler::slot_sendPacketToAllClients(PacketType packetType)
void CommonClientHandler::slot_sendPacketToAllClients(PacketType packetType, bool flOnlyGUI)
{
foreach(int idSocket, clientsMap->keys())
{
ClientHandler *handler = clientsMap->value(idSocket);
if(flOnlyGUI)
{
if(handler->getClient()->getTypeClient() != TypeClientAutorization::TYPE_GUI)
continue;
}
//if(packetType != PacketType::BUSY && packetType != PacketType::FREE)
if (!handler->getClient()->getIsLoggedIn()) continue;
handler->sendPacketType(packetType);
Logger::instance().log("AllSending " + handler->getClient()->getLogin() + " " + enumToString(packetType));
if(flOnlyGUI)
Logger::instance().log("All GUI Sending " + handler->getClient()->getLogin() + " " + enumToString(packetType), LogLevel::DEBUG);
else
Logger::instance().log("All Sending " + handler->getClient()->getLogin() + " " + enumToString(packetType), LogLevel::DEBUG);
}
//emit sigSetServerState(packetType);

View File

@@ -29,7 +29,7 @@ public:
void slot_DocsChanged();
public slots:
void slot_sendPacketToAllClients(PacketType packetType);
void slot_sendPacketToAllClients(PacketType packetType, bool flOnlyGUI);
signals:
//void sigSetServerState(PacketType packetType);

View File

@@ -41,11 +41,10 @@ bool DocsUpdater::updateDocsXML()
{
QMutexLocker locker(&mtxAccess);
QString nameDocsFile = tasksAMMfileName; //кручу верчу запутать хочу!
QString pathDocsFile = updateController->getPathAdditionalFile(nameDocsFile);
QString pathDocsFile = updateController->getPathAdditionalFile(tasksAMMfileName);
QDomDocument docTasksDOM;
if(! Tools::loadXMLtoDOM(pathDocsFile, &docTasksDOM))
if(! Tools::loadFileXMLtoDOM(pathDocsFile, &docTasksDOM))
return false;
QDomElement manifestElement = docTasksDOM.firstChildElement("manifest");
@@ -60,7 +59,7 @@ bool DocsUpdater::updateDocsXML()
domElementParserAMM(manifestElement, nullptr);
if(! Tools::saveDOMtoXML(pathDocsFile, &docTasksDOM))
if(! Tools::saveDOMtoFileXML(pathDocsFile, &docTasksDOM))
{
deleteAllModulsAMM();
listTasksAMM.clear();
@@ -272,7 +271,7 @@ bool DocsUpdater::processingScenXML(const QString dmCode, QString &canplay, QLis
QDomDocument docScenDOM;
if(! Tools::loadXMLtoDOM(pathScenXMLFile, &docScenDOM))
if(! Tools::loadFileXMLtoDOM(pathScenXMLFile, &docScenDOM))
return false;
QDomElement scenarioElement = docScenDOM.firstChildElement("scenario");

View File

@@ -3,15 +3,17 @@
#include <clienthandler.h>
ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, DocsUpdater* docsUpdater, QObject *parent):
ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, DocsUpdater* docsUpdater, CfiController* cfiController, QObject *parent):
QObject(parent),
updateController(nullptr),
docsUpdater(nullptr),
cfiController(nullptr),
providerDBLMS(nullptr)
{
this->providerDBLMS = providerDBLMS;
this->updateController = updateController;
this->docsUpdater = docsUpdater;
this->cfiController = cfiController;
}
void ProcessingSystem::initialize(MultiThreadServer *server, DataParser *dataParser,
@@ -97,12 +99,12 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien
client->sendVersion();
//Отправляем состояние блокировки
/**/
/*
if(server->getStateBlockAutorization() == EStateBlockAutorization::blocked)
client->sendPacketType(PacketType::BUSY);
else
client->sendPacketType(PacketType::FREE);
*/
//client->sendPacketType(PacketType::BUSY);
//client->sendPacketType(PacketType::FREE);

View File

@@ -11,6 +11,7 @@
#include "chatsystem.h"
#include "providerdblms.h"
#include "docsupdater.h"
#include "cficontroller.h"
class SendSystem;
class ServerLMSWidget;
@@ -20,12 +21,13 @@ class DataParser;
class ClientHandler;
class CommonClientHandler;
class MultiThreadServer;
class CfiController;
class ProcessingSystem : public QObject
{
Q_OBJECT
public:
explicit ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, DocsUpdater* docsUpdater, QObject *parent = nullptr);
explicit ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, DocsUpdater* docsUpdater, CfiController* cfiController, QObject *parent = nullptr);
void initialize(MultiThreadServer *server,
DataParser* dataParser,
@@ -75,6 +77,7 @@ private:
DataParser *dataParser;
UpdateController *updateController;
DocsUpdater* docsUpdater;
CfiController* cfiController;
ProviderDBLMS* providerDBLMS;
ChatSystem *chatSystem;
void sendTaskListToUnity(ClientHandler *client);

View File

@@ -105,9 +105,15 @@ bool Tools::checkNonStaticData(QString path)
return false;
}
bool Tools::loadByteArrayXMLtoDOM(const QByteArray &array, QDomDocument *commonDOM)
{
commonDOM->setContent(array);
return true;
}
bool Tools::loadXMLtoDOM(QString pathNameFile, QDomDocument *commonDOM)
bool Tools::loadFileXMLtoDOM(QString pathNameFile, QDomDocument *commonDOM)
{
QFile xmlInFile(pathNameFile);
@@ -122,7 +128,23 @@ bool Tools::loadXMLtoDOM(QString pathNameFile, QDomDocument *commonDOM)
return true;
}
bool Tools::saveDOMtoXML(QString pathNameFile, QDomDocument *commonDOM)
bool Tools::loadFileXMLtoByteArray(QString pathNameFile, QByteArray &array)
{
QFile xmlInFile(pathNameFile);
if (! xmlInFile.open(QFile::ReadOnly | QFile::Text)) {
qDebug() << "loadXMLtoDOM: Couldn't read the file: " + pathNameFile;
return false;
}
array = xmlInFile.readAll();
xmlInFile.close();
return true;
}
bool Tools::saveDOMtoFileXML(QString pathNameFile, QDomDocument *commonDOM)
{
QFile xmlOutFile(pathNameFile);
if (!xmlOutFile.open(QFile::WriteOnly | QFile::Text))

View File

@@ -29,6 +29,7 @@ static const QString buildHashName = staticDataFolderName + "/buildHash.xml";
static const QString buildDataPath = "/Application/" + projectFolderName + "/RRJ_Data/";
static const QString tasksAMMfileName = "/docs.xml"; //"/tasksAmm.xml";
static const QString tasksFIMfileName = "/tasksFIM.xml";
static const QString cfiListFileName = "/CfiList.xml";
//static const QString clientHash = staticDataFolderName + "/clientHash.xml";
static const QString logFolderPath = "log";
@@ -75,8 +76,10 @@ public:
static QString createFullPath(QString path);
static bool checkNonStaticData(QString path);
static bool loadXMLtoDOM(QString pathNameFile, QDomDocument* commonDOM);
static bool saveDOMtoXML(QString pathNameFile, QDomDocument* commonDOM);
static bool loadByteArrayXMLtoDOM(const QByteArray& array, QDomDocument* commonDOM);
static bool loadFileXMLtoDOM(QString pathNameFile, QDomDocument* commonDOM);
static bool loadFileXMLtoByteArray(QString pathNameFile, QByteArray& array);
static bool saveDOMtoFileXML(QString pathNameFile, QDomDocument* commonDOM);
};

View File

@@ -50,7 +50,7 @@ void UpdateController::changeAssetVersion(QString versionName)
currentStreamingPath = assetManager->setVersion(versionName);
setUpCurrentServerHash();
emit sigUpdateDocs();
commonClientHandler->slot_sendPacketToAllClients(PacketType::HASH_READY);
commonClientHandler->slot_sendPacketToAllClients(PacketType::HASH_READY, false);
commonClientHandler->sendCurrentVersionToAllClient();
//commonClientHandler->slot_sendPacketToAllClients(PacketType::FREE);
@@ -118,10 +118,10 @@ void UpdateController::calculateFullHash()
void UpdateController::calculateFullHashWithSetup()
{
bool res = emit signal_BlockAutorization(true, "SERVER", "CalculateFullHashWithSetup");
commonClientHandler->slot_sendPacketToAllClients(PacketType::RECALCULATE_HASH);
commonClientHandler->slot_sendPacketToAllClients(PacketType::RECALCULATE_HASH, false);
calculateCurrentSharedHash();
setUpCurrentServerHash();
commonClientHandler->slot_sendPacketToAllClients(PacketType::HASH_READY);
commonClientHandler->slot_sendPacketToAllClients(PacketType::HASH_READY, false);
res = emit signal_BlockAutorization(false, "SERVER", "CalculateFullHashWithSetup");
}