Формируются списки подпроцедур 1 ур в сервере

This commit is contained in:
2025-11-12 17:47:53 +03:00
parent 98821a7533
commit 4bfd4dad82
4 changed files with 96 additions and 20 deletions

View File

@@ -30,6 +30,9 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
{ {
ui->setupUi(this); ui->setupUi(this);
//Пока не нужно
ui->btnTasksCommon->setVisible(false);
qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId(); qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId();
ui->widget_Control->setObjectName("widgetControl"); ui->widget_Control->setObjectName("widgetControl");

View File

@@ -148,23 +148,21 @@ void CommonClientHandler::slot_DocsChanged()
{ {
ClientHandler *handler = clientsMap->value(idSocket); ClientHandler *handler = clientsMap->value(idSocket);
//Проверяем, есть ли клиенты TYPE_GUI TypeClientAutorization type = handler->getClient()->getTypeClient();
if(handler->getClient()->getTypeClient() == TypeClientAutorization::TYPE_GUI)
{//Отправляем этому клиенту оповещение об изменении docs.xml
/* //Отправляем всем заинтересованным клиентам оповещение об изменении docs.xml
ClientQueryTasksXML clientQueryTasksXML; if(type == TypeClientAutorization::TYPE_GUI)
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); handler->sendPacketType(PacketType::TYPE_XMLANSWER_DOCS_CHANGED);
} }
else if(type == TypeClientAutorization::TYPE_QT_CLIENT)
{
handler->sendPacketType(PacketType::TYPE_XMLANSWER_DOCS_CHANGED);
}
else if(type == TypeClientAutorization::TYPE_UNITY_CLIENT)
{
//handler->sendPacketType(PacketType::TYPE_XMLANSWER_DOCS_CHANGED); //Unity не обязательно!
}
} }
} }

View File

@@ -43,6 +43,7 @@ bool DocsUpdater::slot_update()
deleteAllModulsAMM(); deleteAllModulsAMM();
listTasksAMM.clear(); listTasksAMM.clear();
subProcMap.clear();
domElementParserAMM(manifestElement, nullptr); domElementParserAMM(manifestElement, nullptr);
@@ -147,11 +148,32 @@ void DocsUpdater::domElementParserAMM(QDomElement element, Module* moduleParent)
//Активность //Активность
//QString canplay = nodeMap.namedItem("canplay").nodeValue(); //QString canplay = nodeMap.namedItem("canplay").nodeValue();
//Обновление Активности
//Обновление Активности и построение списка подпроцедур 1го уровня
/*
QString dmCode = DMmodulParent->dmCode(); QString dmCode = DMmodulParent->dmCode();
QString canplay = defineCanplayByScenXML(dmCode); QString canplay = defineCanplayByScenXML(dmCode);
DMmodulParent->setModeList(parseCanplay(canplay)); DMmodulParent->setModeList(parseCanplay(canplay));
nodeMap.namedItem("canplay").setNodeValue(canplay); nodeMap.namedItem("canplay").setNodeValue(canplay);
*/
QString dmCode = DMmodulParent->dmCode();
QString canplay = "";
QList<SubProc> listSubProc;
if(processingScenXML(dmCode, canplay, listSubProc))
{
DMmodulParent->setModeList(parseCanplay(canplay));
nodeMap.namedItem("canplay").setNodeValue(canplay);
subProcMap.insert(dmCode, listSubProc);
}
else
{
DMmodulParent->setModeList(parseCanplay(canplay));
nodeMap.namedItem("canplay").setNodeValue(canplay);
}
} }
else else
DMmodulParent->setLangStructEng(nodeMap.namedItem("techName").nodeValue(), DMmodulParent->setLangStructEng(nodeMap.namedItem("techName").nodeValue(),
@@ -236,9 +258,11 @@ ModeList DocsUpdater::parseCanplay(QString canplay)
return modeList; return modeList;
} }
QString DocsUpdater::defineCanplayByScenXML(QString dmCode) bool DocsUpdater::processingScenXML(const QString dmCode, QString &canplay, QList<SubProc> &listSubProc)
{ {
QString canplay = ""; listSubProc.clear();
canplay = "";
QString signDemo = "-"; QString signDemo = "-";
QString signTrain = "-"; QString signTrain = "-";
QString signExam = "-"; QString signExam = "-";
@@ -247,43 +271,82 @@ QString DocsUpdater::defineCanplayByScenXML(QString dmCode)
QString nameScenXMLFile = "/" + dmCode + ".xml"; QString nameScenXMLFile = "/" + dmCode + ".xml";
QString pathScenXMLFile = updateController->getPathScensFile(nameScenXMLFile); QString pathScenXMLFile = updateController->getPathScensFile(nameScenXMLFile);
QDomDocument docScenDOM; QDomDocument docScenDOM;
if(! Tools::loadXMLtoDOM(pathScenXMLFile, &docScenDOM)) if(! Tools::loadXMLtoDOM(pathScenXMLFile, &docScenDOM))
return canplay; return false;
QDomElement scenarioElement = docScenDOM.firstChildElement("scenario"); QDomElement scenarioElement = docScenDOM.firstChildElement("scenario");
if(scenarioElement.isNull()) if(scenarioElement.isNull())
return canplay; return false;
QDomElement demoElement = scenarioElement.firstChildElement("demo"); QDomElement demoElement = scenarioElement.firstChildElement("demo");
if(!demoElement.isNull()) if(!demoElement.isNull())
{ {
//canplay
if(demoElement.toElement().attribute("canplay") == "True") if(demoElement.toElement().attribute("canplay") == "True")
signDemo = "+"; signDemo = "+";
//subProc
selectSubProc(demoElement, listSubProc);
} }
QDomElement trainElement = scenarioElement.firstChildElement("train"); QDomElement trainElement = scenarioElement.firstChildElement("train");
if(!trainElement.isNull()) if(!trainElement.isNull())
{ {
//canplay
if(trainElement.toElement().attribute("canplay") == "True") if(trainElement.toElement().attribute("canplay") == "True")
signTrain = "+"; signTrain = "+";
//subProc
selectSubProc(trainElement, listSubProc);
} }
QDomElement examElement = scenarioElement.firstChildElement("exam"); QDomElement examElement = scenarioElement.firstChildElement("exam");
if(!examElement.isNull()) if(!examElement.isNull())
{ {
//canplay
if(examElement.toElement().attribute("canplay") == "True") if(examElement.toElement().attribute("canplay") == "True")
signExam = "+"; signExam = "+";
//subProc
selectSubProc(examElement, listSubProc);
} }
QDomElement autoElement = scenarioElement.firstChildElement("auto"); QDomElement autoElement = scenarioElement.firstChildElement("auto");
if(!autoElement.isNull()) if(!autoElement.isNull())
{ {
//canplay
if(autoElement.toElement().attribute("canplay") == "True") if(autoElement.toElement().attribute("canplay") == "True")
signAuto = "+"; signAuto = "+";
//subProc
//Из этого режима не берем!
} }
canplay = QString("%1/%2/%3/%4").arg(signDemo, signTrain, signExam, signAuto); canplay = QString("%1/%2/%3/%4").arg(signDemo, signTrain, signExam, signAuto);
return canplay; return true;
}
void DocsUpdater::selectSubProc(QDomElement &modeElement, QList<SubProc> &listSubProc)
{
QDomNodeList nodeList = modeElement.elementsByTagName("node");
for(int i = 0; i < nodeList.count(); i++)
{
QDomNode node = nodeList.at(i);
if(node.toElement().attribute("type") == "Subproc")
{
QDomElement subProcElement = node.firstChildElement("subproc");
if(!subProcElement.isNull())
{
SubProc subProc;
subProc.dmCode = subProcElement.toElement().attribute("dmCode");
subProc.title = subProcElement.toElement().attribute("title");
listSubProc.append(subProc);
}
}
}
} }

View File

@@ -5,6 +5,12 @@
#include "updatecontroller.h" #include "updatecontroller.h"
#include "module.h" #include "module.h"
struct SubProc
{
QString dmCode;
QString title;
};
class DocsUpdater : public QObject class DocsUpdater : public QObject
{ {
@@ -24,7 +30,11 @@ private:
void domElementParserAMM(QDomElement element, Module* moduleParent); void domElementParserAMM(QDomElement element, Module* moduleParent);
void deleteAllModulsAMM(); void deleteAllModulsAMM();
ModeList parseCanplay(QString canplay); ModeList parseCanplay(QString canplay);
QString defineCanplayByScenXML(QString dmCode);
bool processingScenXML(const QString dmCode, QString& canplay, QList<SubProc>& listSubProc);
void selectSubProc(QDomElement& modeElement, QList<SubProc>& listSubProc);
private: private:
UpdateController* updateController; UpdateController* updateController;
@@ -32,6 +42,8 @@ private:
bool flagStop; bool flagStop;
QList<Module*> listAllModulesAMM; //? QList<Module*> listAllModulesAMM; //?
QList<TaskAmmFim> listTasksAMM; //? QList<TaskAmmFim> listTasksAMM; //?
QMap<QString, QList<SubProc>> subProcMap;
}; };
#endif // DOCSUPDATER_H #endif // DOCSUPDATER_H