Рефакт TaskAMMFIMTreePreparation

This commit is contained in:
2025-07-25 12:29:48 +03:00
parent 943b9413fa
commit 3e5c451bb3
10 changed files with 192 additions and 108 deletions

View File

@@ -13,37 +13,68 @@ TaskAMMFIMTreePreparation::TaskAMMFIMTreePreparation(TypeListTreeAMMFIM type, QO
TaskAMMFIMTreePreparation::~TaskAMMFIMTreePreparation()
{
mtxAccess.lock();
deleteAllModulsAMM();
deleteAllTaskFIM();
mtxAccess.unlock();
}
void TaskAMMFIMTreePreparation::stopParser()
void TaskAMMFIMTreePreparation::slot_stopParserPreparation()
{
flagStop = true;
}
TaskAmmFim* TaskAMMFIMTreePreparation::getTaskFIMbyID(int id)
TaskAmmFim TaskAMMFIMTreePreparation::getTaskFIMbyID(int id)
{
for(int i = 0; i < listTaskFIM.count(); i++)
mtxAccess.lock();
for(int i = 0; i < listTasksFIM.count(); i++)
{/*Задачи*/
TaskAmmFim* task = listTaskFIM.at(i);
if(task->id == id)
TaskAmmFim task = listTasksFIM.at(i);
if(task.id == id)
{
mtxAccess.unlock();
return task;
}
}
return nullptr;
mtxAccess.unlock();
return TaskAmmFim();
}
Module* TaskAMMFIMTreePreparation::getModuleAMMbyID(int id)
TaskAmmFim TaskAMMFIMTreePreparation::getTaskAMMbyID(int id)
{
mtxAccess.lock();
for(int i = 0; i < listTasksAMM.count(); i++)
{/*Задачи*/
TaskAmmFim task = listTasksAMM.at(i);
if(task.id == id)
{
mtxAccess.unlock();
return task;
}
}
mtxAccess.unlock();
return TaskAmmFim();
}
ModuleType TaskAMMFIMTreePreparation::getTypeModuleAMMbyID(int id)
{
ModuleType type = ModuleType::TYPE_PM;
Module* ptrModule = nullptr;
mtxAccess.lock();
for(Module* module: listAllModulesAMM)
{
ptrModule = module->getModuleByID(id);
if(ptrModule)
return ptrModule;
{
type = ptrModule->getType();
{
mtxAccess.unlock();
return type;
}
}
}
return nullptr;
mtxAccess.unlock();
return type;
}
QTreeWidgetItem *TaskAMMFIMTreePreparation::addModuleToTreeWidgetAMM(Module *module, bool flOnlyActive, QTreeWidgetItem *parentItem)
@@ -97,7 +128,10 @@ QTreeWidgetItem *TaskAMMFIMTreePreparation::addModuleToTreeWidgetAMM(Module *mod
void TaskAMMFIMTreePreparation::loadAMMtasksFromXML(QByteArray array)
{
mtxAccess.lock();
deleteAllModulsAMM();
listTasksAMM.clear();
QDomDocument docTasksDOM;
@@ -105,14 +139,21 @@ void TaskAMMFIMTreePreparation::loadAMMtasksFromXML(QByteArray array)
QDomElement manifestElement = docTasksDOM.firstChildElement("manifest");
if(manifestElement.isNull())
{
mtxAccess.unlock();
return;
}
domElementParserAMM(manifestElement, nullptr);
mtxAccess.unlock();
}
void TaskAMMFIMTreePreparation::loadFIMtasksFromXML(QByteArray array)
{
deleteAllTaskFIM();
mtxAccess.lock();
listTasksFIM.clear();
QDomDocument docTasksDOM;
@@ -120,17 +161,26 @@ void TaskAMMFIMTreePreparation::loadFIMtasksFromXML(QByteArray array)
QDomElement RRJTasksElement = docTasksDOM.firstChildElement("RRJTasks");
if(RRJTasksElement.isNull())
{
mtxAccess.unlock();
return;
}
QDomElement taskElement = RRJTasksElement.firstChildElement();
if(taskElement.isNull())
{
mtxAccess.unlock();
return;
}
do
{/*task*/
if(flagStop)
{
mtxAccess.unlock();
return;
}
QString name = taskElement.nodeName();
QDomNamedNodeMap nodeMap = taskElement.attributes();
@@ -187,21 +237,15 @@ void TaskAMMFIMTreePreparation::loadFIMtasksFromXML(QByteArray array)
}
}while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull());
}
listTaskFIM.append(task);
listTasksFIM.append(*task);
delete task;
}
}while (! (taskElement = taskElement.nextSiblingElement()).isNull());
mtxAccess.unlock();
return;
}
void TaskAMMFIMTreePreparation::deleteAllTaskFIM()
{
for(TaskAmmFim* task: listTaskFIM)
delete task;
listTaskFIM.clear();
}
void TaskAMMFIMTreePreparation::deleteAllModulsAMM()
{
for(Module* module: listAllModulesAMM)
@@ -326,6 +370,19 @@ void TaskAMMFIMTreePreparation::domElementParserAMM(QDomElement element, Module*
if(moduleParent == nullptr)
listAllModulesAMM.append(module);
if(module)
if(module->getType() == ModuleType::TYPE_DM)
{
TaskAmmFim* task = nullptr;
task = new TaskAmmFim();
task->setID(module->getID());
task->ammProcedure.title = static_cast<DM*>(module)->getLangStructRus().techName;
task->ammProcedure.dmCode = static_cast<DM*>(module)->dmCode();
listTasksAMM.append(*task);
delete task;
}
}while (! (childElement = childElement.nextSiblingElement()).isNull());
}
@@ -346,13 +403,17 @@ void TaskAMMFIMTreePreparation::slot_prepareAMMListItems(QByteArray array, bool
Q_EMIT signal_listAMMItemsReady(listItems);
}
void TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask)
void TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTasks)
{
qDebug() << "TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee thread ID " << QThread::currentThreadId();
listItems.clear();
for(TaskAmmFim task : listTask)
mtxAccess.lock();
this->listTasksAMM = listTasks;
for(TaskAmmFim task : listTasks)
{
QTreeWidgetItem* item = nullptr;
@@ -394,6 +455,8 @@ void TaskAMMFIMTreePreparation::slot_prepareAMMListItemsForTrainee(QList<TaskAmm
listItems.append(item);
}
mtxAccess.unlock();
Q_EMIT signal_listAMMItemsReady(listItems);
}
@@ -405,9 +468,11 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItems(QByteArray array)
listItems.clear();
for(TaskAmmFim* taskPtr : listTaskFIM)
mtxAccess.lock();
for(TaskAmmFim taskPtr : listTasksFIM)
{/*Задачи*/
TaskAmmFim task = *taskPtr;
TaskAmmFim task = taskPtr;
QTreeWidgetItem* itemTask = new QTreeWidgetItem();
@@ -478,22 +543,27 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItems(QByteArray array)
listItems.append(itemTask);
}
mtxAccess.unlock();
Q_EMIT signal_listFIMItemsReady(listItems);
}
void TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask)
void TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTasks)
{
qDebug() << "TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee thread ID " << QThread::currentThreadId();
listItems.clear();
for(TaskAmmFim task : listTask)
mtxAccess.lock();
this->listTasksFIM = listTasks;
for(TaskAmmFim task : listTasks)
{/*Задачи*/
//TaskAmmFim* task = listTaskAmmFim.at(i);
TaskAmmFim* taskNew = nullptr;
taskNew = new TaskAmmFim();
*taskNew = task;
listTaskFIM.append(taskNew);
//TaskAmmFim* taskNew = nullptr;
//taskNew = new TaskAmmFim();
//*taskNew = task;
//listTaskFIM.append(taskNew);
QTreeWidgetItem* itemTask = new QTreeWidgetItem();
@@ -565,5 +635,7 @@ void TaskAMMFIMTreePreparation::slot_prepareFIMListItemsForTrainee(QList<TaskAmm
listItems.append(itemTask);
}
mtxAccess.unlock();
Q_EMIT signal_listFIMItemsReady(listItems);
}