Передача назначенных задач из сервера в ГУИ

This commit is contained in:
krivoshein
2025-01-28 13:19:33 +03:00
parent eebe56dd6c
commit c7c665bebd
26 changed files with 236 additions and 11 deletions

View File

@@ -479,6 +479,36 @@ int DataBaseLMS::deleteTaskAMM(int id_task)
return queryExecInt(queryStr); return queryExecInt(queryStr);
} }
QList<TaskAmmFim> DataBaseLMS::selectTasksAMMofTrainee(int id_trainee)
{
QList<TaskAmmFim> listTasks;
QString queryStr = QString("SELECT tasks_amm.task_id, tasks_amm.title, tasks_amm.dm_code, "
"trainees.trainee_id "
"FROM public.tasks_amm JOIN public.trainees ON trainees.trainee_id = tasks_amm.trainee_task "
"WHERE tasks_amm.trainee_task = %1 "
"ORDER BY tasks_amm.task_id ASC").arg(
id_trainee);
QSqlQuery query = QSqlQuery(*db);
if(queryExec(queryStr, &query))
{
while (query.next())
{//Задача
TaskAmmFim task;
task.setID(query.value(0).toInt());
task.ammProcedure.title = query.value(1).toString();
task.ammProcedure.dmCode = query.value(2).toString();
listTasks.append(task);
}
}
return listTasks;
}
int DataBaseLMS::insertTaskFIM(int id_trainee) int DataBaseLMS::insertTaskFIM(int id_trainee)
{ {
QString queryStr = QString("INSERT INTO public.tasks_fim (title, trainee_task) " QString queryStr = QString("INSERT INTO public.tasks_fim (title, trainee_task) "

View File

@@ -57,6 +57,7 @@ protected:
int insertTaskAMM(int id_trainee); int insertTaskAMM(int id_trainee);
int updateTaskAMM(TaskAmmFim task); int updateTaskAMM(TaskAmmFim task);
int deleteTaskAMM(int id_task); int deleteTaskAMM(int id_task);
QList<TaskAmmFim> selectTasksAMMofTrainee(int id_trainee);
//Задача FIM //Задача FIM
int insertTaskFIM(int id_trainee); int insertTaskFIM(int id_trainee);
int updateTaskFIM(TaskAmmFim task); int updateTaskFIM(TaskAmmFim task);

View File

@@ -296,6 +296,11 @@ int InterfaceDataBaseLMS::editTaskAMM(TaskAmmFim task)
return updateTaskAMM(task); return updateTaskAMM(task);
} }
QList<TaskAmmFim> InterfaceDataBaseLMS::getListTasksAMMofTrainee(int id_trainee)
{
return selectTasksAMMofTrainee(id_trainee);
}
int InterfaceDataBaseLMS::newTaskFIM(int id_trainee) int InterfaceDataBaseLMS::newTaskFIM(int id_trainee)
{ {
return insertTaskFIM(id_trainee); return insertTaskFIM(id_trainee);

View File

@@ -72,6 +72,7 @@ public:
int newTaskAMM(int id_trainee); int newTaskAMM(int id_trainee);
int delTaskAMM(int id); int delTaskAMM(int id);
int editTaskAMM(TaskAmmFim task); int editTaskAMM(TaskAmmFim task);
QList<TaskAmmFim> getListTasksAMMofTrainee(int id_trainee);
int newTaskFIM(int id_trainee); int newTaskFIM(int id_trainee);
int delTaskFIM(int id); int delTaskFIM(int id);

View File

@@ -274,6 +274,7 @@ void RecognizeSystem::recognize(QTcpSocket *socket)
case TYPE_XMLANSWER_QUERY_DB__LIST_COMPUTERS: case TYPE_XMLANSWER_QUERY_DB__LIST_COMPUTERS:
case TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS: case TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS:
case TYPE_XMLANSWER_QUERY_DB__LIST_TASKS: case TYPE_XMLANSWER_QUERY_DB__LIST_TASKS:
case TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE:
{ {
QByteArray array; QByteArray array;
stream.startTransaction(); stream.startTransaction();
@@ -670,6 +671,29 @@ void RecognizeSystem::xmlParserQueryToDB(PacketType packetType, QByteArray array
emit sigAnswerQueryToDB_ListTasks(listTasks); emit sigAnswerQueryToDB_ListTasks(listTasks);
} }
break; break;
case TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE:
{
QList<TaskAmmFim> listTasks;
int trainee_id = 0;
QDomNode listNode = commonDOM.namedItem("ListTasksAMM");
trainee_id = listNode.toElement().attribute("trainee_id").toInt();
for(int i = 0; i < listNode.childNodes().count(); i++)
{
QDomNode taskNode = listNode.childNodes().at(i);
if(taskNode.nodeName() == "taskAMM")
{//Задача
TaskAmmFim task;
task.setID(taskNode.toElement().attribute("task_id").toInt());
task.ammProcedure.title = taskNode.toElement().attribute("title");
task.ammProcedure.dmCode = taskNode.toElement().attribute("dmCode");
listTasks.append(task);
}
}
emit sigAnswerQueryToDB_ListTasksAMMforTrainee(listTasks, trainee_id);
}
break;
}; };
} }

View File

@@ -49,6 +49,7 @@ signals:
void sigAnswerQueryToDB_ListComputers(QList<Computer> listComputers); void sigAnswerQueryToDB_ListComputers(QList<Computer> listComputers);
void sigAnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms); void sigAnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms);
void sigAnswerQueryToDB_ListTasks(QList<Task> listTasks); void sigAnswerQueryToDB_ListTasks(QList<Task> listTasks);
void sigAnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAmmFim>listTasks, int trainee_id);
void sigAnswerQueryTasksXML_FIM(QByteArray array); void sigAnswerQueryTasksXML_FIM(QByteArray array);
void sigAnswerQueryTasksXML_AMM(QByteArray array); void sigAnswerQueryTasksXML_AMM(QByteArray array);
void sigShowServerDataList(QList<StreamingVersionData*> *versions); void sigShowServerDataList(QList<StreamingVersionData*> *versions);

View File

@@ -46,6 +46,9 @@ enum PacketType{
TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS = 104, TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS = 104,
TYPE_XMLANSWER_QUERY_DB__LIST_TASKS = 105, TYPE_XMLANSWER_QUERY_DB__LIST_TASKS = 105,
TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE = 106,
TYPE_XMLANSWER_QUERY_TASKS_FIM_FOR_TRAINEE = 107,
//xml-ответы на запросы AdditionalFiles //xml-ответы на запросы AdditionalFiles
TYPE_XMLANSWER_QUERY_TASKS_XML_FIM = 130, TYPE_XMLANSWER_QUERY_TASKS_XML_FIM = 130,
TYPE_XMLANSWER_QUERY_TASKS_XML_AMM = 131, TYPE_XMLANSWER_QUERY_TASKS_XML_AMM = 131,

View File

@@ -148,6 +148,14 @@ QList<Task> ConnectorToServer::getListTasks()
return listTasks; return listTasks;
} }
QList<TaskAmmFim> ConnectorToServer::getListTasksAMMforTrainee(int trainee_id)
{
if(mapTasksAMM.contains(trainee_id))
return mapTasksAMM.value(trainee_id);
else
return QList<TaskAmmFim>();
}
bool ConnectorToServer::isArchivedInstructor(int id) bool ConnectorToServer::isArchivedInstructor(int id)
{ {
for(Instructor instructor : listInstructors) for(Instructor instructor : listInstructors)
@@ -313,6 +321,17 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTasks(QList<Task> listTasks)
//emit signal_UpdateDB(false, true); //emit signal_UpdateDB(false, true);
} }
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id)
{
//Удаляем старые задачи этого обучаемого
mapTasksAMM.remove(trainee_id);
//Добавляем новые
mapTasksAMM.insert(trainee_id, listTasks);
emit signal_UpdateTasksAMMforTrainee(trainee_id);
}
void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array) void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array)
{ {
this->listTaskFimArray = array; this->listTaskFimArray = array;
@@ -385,6 +404,8 @@ void ConnectorToServer::bindConnection()
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListClassrooms,this,&ConnectorToServer::slot_AnswerQueryToDB_ListClassrooms); connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListClassrooms,this,&ConnectorToServer::slot_AnswerQueryToDB_ListClassrooms);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListTasks,this,&ConnectorToServer::slot_AnswerQueryToDB_ListTasks); connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListTasks,this,&ConnectorToServer::slot_AnswerQueryToDB_ListTasks);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListTasksAMMforTrainee,this,&ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryTasksXML_FIM,this,&ConnectorToServer::slot_AnswerQueryTasksXML_FIM); connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryTasksXML_FIM,this,&ConnectorToServer::slot_AnswerQueryTasksXML_FIM);
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryTasksXML_AMM,this,&ConnectorToServer::slot_AnswerQueryTasksXML_AMM); connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryTasksXML_AMM,this,&ConnectorToServer::slot_AnswerQueryTasksXML_AMM);
connect(recognizeSystem,&RecognizeSystem::sigAnimationActivated,this,&ConnectorToServer::activateLoadAnimation,Qt::AutoConnection); connect(recognizeSystem,&RecognizeSystem::sigAnimationActivated,this,&ConnectorToServer::activateLoadAnimation,Qt::AutoConnection);

View File

@@ -2,6 +2,7 @@
#define CONNECTORTOSERVER_H #define CONNECTORTOSERVER_H
#include <QObject> #include <QObject>
#include <QMap>
#include <widgets/versionselectwidget.h> #include <widgets/versionselectwidget.h>
#include <widgets/waitanimationwidget.h> #include <widgets/waitanimationwidget.h>
#include "Core\tcpclient.h" #include "Core\tcpclient.h"
@@ -44,6 +45,7 @@ public:
QList<Computer> getListComputers(); QList<Computer> getListComputers();
QList<Classroom> getListClassrooms(); QList<Classroom> getListClassrooms();
QList<Task> getListTasks(); QList<Task> getListTasks();
QList<TaskAmmFim> getListTasksAMMforTrainee(int trainee_id);
bool isArchivedInstructor(int id); bool isArchivedInstructor(int id);
bool isAdminInstructor(int id); bool isAdminInstructor(int id);
@@ -72,6 +74,7 @@ public slots:
void slot_AnswerQueryToDB_ListComputers(QList<Computer> listComputers); void slot_AnswerQueryToDB_ListComputers(QList<Computer> listComputers);
void slot_AnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms); void slot_AnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms);
void slot_AnswerQueryToDB_ListTasks(QList<Task> listTasks); void slot_AnswerQueryToDB_ListTasks(QList<Task> listTasks);
void slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id);
void slot_AnswerQueryTasksXML_FIM(QByteArray array); void slot_AnswerQueryTasksXML_FIM(QByteArray array);
void slot_AnswerQueryTasksXML_AMM(QByteArray array); void slot_AnswerQueryTasksXML_AMM(QByteArray array);
@@ -92,8 +95,11 @@ signals:
void signal_UpdateDB(bool treeInstructor, bool treeTrainee); void signal_UpdateDB(bool treeInstructor, bool treeTrainee);
void signal_UpdateTasksFIM(); void signal_UpdateTasksFIM(); //Общий список
void signal_UpdateTasksAMM(); void signal_UpdateTasksAMM(); //Общий список
void signal_UpdateTasksFIMforTrainee(int trainee_id);
void signal_UpdateTasksAMMforTrainee(int trainee_id);
void signal_ConnectedToServer(bool state); void signal_ConnectedToServer(bool state);
@@ -126,6 +132,7 @@ private:
QList<Computer> listComputers; QList<Computer> listComputers;
QList<Classroom> listClassrooms; QList<Classroom> listClassrooms;
QList<Task> listTasks; QList<Task> listTasks;
QMap<int, QList<TaskAmmFim>> mapTasksAMM;
QByteArray listTaskFimArray; QByteArray listTaskFimArray;
QByteArray listTaskAmmArray; QByteArray listTaskAmmArray;

View File

@@ -29,6 +29,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
qRegisterMetaType<QList<Classroom>>("QList<Classroom>"); qRegisterMetaType<QList<Classroom>>("QList<Classroom>");
qRegisterMetaType<QList<Module*>>("QList<Module*>"); qRegisterMetaType<QList<Module*>>("QList<Module*>");
qRegisterMetaType<QList<QTreeWidgetItem*>>("QList<QTreeWidgetItem*>"); qRegisterMetaType<QList<QTreeWidgetItem*>>("QList<QTreeWidgetItem*>");
qRegisterMetaType<QList<TaskAmmFim>>("QList<TaskAmmFim>");
qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId(); qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId();

View File

@@ -10,6 +10,7 @@
#include "ammtaskswidget.h" #include "ammtaskswidget.h"
#include "fimtaskswidget.h" #include "fimtaskswidget.h"
#include "connectortoserver.h" #include "connectortoserver.h"
#include "tasksAmmFim.h"
Q_DECLARE_METATYPE(QList<Instructor>) Q_DECLARE_METATYPE(QList<Instructor>)
Q_DECLARE_METATYPE(QList<Trainee>) Q_DECLARE_METATYPE(QList<Trainee>)
@@ -18,6 +19,7 @@ Q_DECLARE_METATYPE(QList<Computer>)
Q_DECLARE_METATYPE(QList<Classroom>) Q_DECLARE_METATYPE(QList<Classroom>)
Q_DECLARE_METATYPE(QList<Module*>) Q_DECLARE_METATYPE(QList<Module*>)
Q_DECLARE_METATYPE(QList<QTreeWidgetItem*>) Q_DECLARE_METATYPE(QList<QTreeWidgetItem*>)
Q_DECLARE_METATYPE(QList<TaskAmmFim>)
namespace Ui { namespace Ui {

View File

@@ -14,6 +14,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
treeWidget(nullptr), treeWidget(nullptr),
type(type), type(type),
loginTraineeSelected(""), loginTraineeSelected(""),
idTraineeSelected(0),
threadPreparation(nullptr), threadPreparation(nullptr),
threadAnimation(nullptr), threadAnimation(nullptr),
taskTreePreparation(nullptr), taskTreePreparation(nullptr),
@@ -46,6 +47,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
threadPreparation->start(); threadPreparation->start();
threadPreparation->setPriority(QThread::HighestPriority); threadPreparation->setPriority(QThread::HighestPriority);
connect(this, &AMMtasksWidget::signal_prepareListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareListItems); connect(this, &AMMtasksWidget::signal_prepareListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareListItems);
connect(this, &AMMtasksWidget::signal_prepareListItemsForTrainee, taskTreePreparation, &TaskTreePreparation::slot_prepareListItemsForTrainee);
connect(taskTreePreparation, &TaskTreePreparation::signal_listItemsReady, this, &AMMtasksWidget::slot_listItemsReady); connect(taskTreePreparation, &TaskTreePreparation::signal_listItemsReady, this, &AMMtasksWidget::slot_listItemsReady);
threadAnimation = new QThread(); threadAnimation = new QThread();
@@ -81,6 +83,12 @@ void AMMtasksWidget::resizeEvent(QResizeEvent *event)
{ {
QSize size = event->size(); QSize size = event->size();
waitAnimationWidget->resize(size); waitAnimationWidget->resize(size);
int width = treeWidget->width();
treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 50);
treeWidget->setColumnWidth(ColumnsTree::clmn_code, 250);
treeWidget->setColumnWidth(ColumnsTree::clmn_PMorDM, width - 310);
} }
void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous) void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
@@ -129,11 +137,21 @@ void AMMtasksWidget::slot_traineeSelected(QString login)
{ {
qDebug() << "AMMtasksWidget::slot_traineeSelected thread ID " << QThread::currentThreadId(); qDebug() << "AMMtasksWidget::slot_traineeSelected thread ID " << QThread::currentThreadId();
loginTraineeSelected = login; loginTraineeSelected = login;
idTraineeSelected = connectorToServer->getIdTraineeByLogin(loginTraineeSelected);
if(type == TypeList::listForTrainee)
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_GET_TASKS_AMM_FOR_TRAINEE, idTraineeSelected);
}
void AMMtasksWidget::slot_UpdateTasksAMMforTrainee(int trainee_id)
{
if(type == TypeList::listForTrainee) if(type == TypeList::listForTrainee)
{ {
int trainee_id = connectorToServer->getIdTraineeByLogin(loginTraineeSelected); if(idTraineeSelected == trainee_id)
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_GET_TASKS_AMM_FOR_TRAINEE, trainee_id); {
QList<TaskAmmFim> listTask = connectorToServer->getListTasksAMMforTrainee(trainee_id);
signal_prepareListItemsForTrainee(listTask, &listAllModules);
}
} }
} }
@@ -180,10 +198,6 @@ void AMMtasksWidget::preparationTreeWidget()
reSetHeadTreeWidget(); reSetHeadTreeWidget();
treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 80);
treeWidget->setColumnWidth(ColumnsTree::clmn_PMorDM, 900);
treeWidget->setColumnWidth(ColumnsTree::clmn_code, 200);
//treeWidget->setColumnHidden(ColumnsTree::clmn_ID, true); //treeWidget->setColumnHidden(ColumnsTree::clmn_ID, true);
} }

View File

@@ -48,6 +48,8 @@ public Q_SLOTS:
//слот обработки сигнала о выборе обучаемого //слот обработки сигнала о выборе обучаемого
void slot_traineeSelected(QString login); void slot_traineeSelected(QString login);
void slot_UpdateTasksAMMforTrainee(int trainee_id);
private: private:
Module* searchModuleByID(int id); Module* searchModuleByID(int id);
void preparationTreeWidget(); void preparationTreeWidget();
@@ -56,6 +58,7 @@ private:
Q_SIGNALS: Q_SIGNALS:
void signal_prepareListItems(QByteArray array, QList<Module*>* listAllModules); void signal_prepareListItems(QByteArray array, QList<Module*>* listAllModules);
void signal_prepareListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModules);
public Q_SLOTS: public Q_SLOTS:
void slot_listItemsReady(QList<QTreeWidgetItem*> listItems); void slot_listItemsReady(QList<QTreeWidgetItem*> listItems);
@@ -68,6 +71,7 @@ private:
private: private:
QList<Module*> listAllModules; QList<Module*> listAllModules;
QString loginTraineeSelected; QString loginTraineeSelected;
int idTraineeSelected;
QThread* threadPreparation; QThread* threadPreparation;
QThread* threadAnimation; QThread* threadAnimation;

View File

@@ -45,6 +45,14 @@ FIMtasksWidget::~FIMtasksWidget()
delete ui; delete ui;
} }
void FIMtasksWidget::resizeEvent(QResizeEvent *event)
{
int width = treeWidget->width();
treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 50);
treeWidget->setColumnWidth(ColumnsTree::clmn_Title, width - 60);
}
void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous) void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
{ {
if(current == nullptr) if(current == nullptr)
@@ -201,9 +209,6 @@ void FIMtasksWidget::preparationTreeWidget()
reSetHeadTreeWidget(); reSetHeadTreeWidget();
treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 20);
treeWidget->setColumnWidth(ColumnsTree::clmn_Title, 500);
//treeWidget->setColumnHidden(ColumnsTree::clmn_ID, true); //treeWidget->setColumnHidden(ColumnsTree::clmn_ID, true);
} }

View File

@@ -37,6 +37,9 @@ public:
treeWidget->clear(); treeWidget->clear();
} }
public:
void resizeEvent(QResizeEvent *event) override;
private Q_SLOTS: private Q_SLOTS:
void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
void on_btnUpdateTasks_clicked(); void on_btnUpdateTasks_clicked();

View File

@@ -218,3 +218,35 @@ void TaskTreePreparation::slot_prepareListItems(QByteArray array, QList<Module*>
Q_EMIT signal_listItemsReady(listItems); Q_EMIT signal_listItemsReady(listItems);
} }
void TaskTreePreparation::slot_prepareListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module *> *listAllModules)
{
qDebug() << "TaskTreePreparation::slot_prepareListItemsForTrainee thread ID " << QThread::currentThreadId();
this->listAllModules = listAllModules;
//loadAMMtasksFromList(listTask);
listItems.clear();
for(TaskAmmFim task : listTask)
{
QTreeWidgetItem* item = nullptr;
QString text = task.ammProcedure.title;
QString ID = QString::number(task.getID());
QString code = task.ammProcedure.dmCode;
item = new QTreeWidgetItem();
item->setIcon(0, QIcon(":/resources/icons/procedure.png"));
item->setText(ColumnsTree::clmn_PMorDM, text);
item->setText(ColumnsTree::clmn_code, code);
item->setText(ColumnsTree::clmn_ID, ID);
listItems.append(item);
}
Q_EMIT signal_listItemsReady(listItems);
}

View File

@@ -5,6 +5,7 @@
#include <QTreeWidgetItem> #include <QTreeWidgetItem>
#include <QDomElement> #include <QDomElement>
#include "module.h" #include "module.h"
#include "tasksAmmFim.h"
enum ColumnsTree{ enum ColumnsTree{
clmn_PMorDM = 0, clmn_PMorDM = 0,
@@ -30,6 +31,7 @@ private:
public Q_SLOTS: public Q_SLOTS:
void slot_prepareListItems(QByteArray array, QList<Module*>* listAllModules); void slot_prepareListItems(QByteArray array, QList<Module*>* listAllModules);
void slot_prepareListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModules);
Q_SIGNALS: Q_SIGNALS:
void signal_listItemsReady(QList<QTreeWidgetItem*> listItems); void signal_listItemsReady(QList<QTreeWidgetItem*> listItems);

View File

@@ -20,6 +20,8 @@ ViewerTrainees::ViewerTrainees(ConnectorToServer* connectorToServer, QWidget *pa
connect(this, &ViewerTrainees::signal_traineeSelected, fimTasksWidget, &FIMtasksWidget::slot_traineeSelected); connect(this, &ViewerTrainees::signal_traineeSelected, fimTasksWidget, &FIMtasksWidget::slot_traineeSelected);
connect(this, &ViewerTrainees::signal_traineeSelected, ammTasksWidget, &AMMtasksWidget::slot_traineeSelected); connect(this, &ViewerTrainees::signal_traineeSelected, ammTasksWidget, &AMMtasksWidget::slot_traineeSelected);
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMMforTrainee, ammTasksWidget, &AMMtasksWidget::slot_UpdateTasksAMMforTrainee);
ui->verticalLayout_2->addWidget(ammTasksWidget); ui->verticalLayout_2->addWidget(ammTasksWidget);
ui->verticalLayout_2->addWidget(fimTasksWidget); ui->verticalLayout_2->addWidget(fimTasksWidget);

View File

@@ -28,6 +28,9 @@ enum PacketType
TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS = 104, TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS = 104,
TYPE_XMLANSWER_QUERY_DB__LIST_TASKS = 105, TYPE_XMLANSWER_QUERY_DB__LIST_TASKS = 105,
TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE = 106,
TYPE_XMLANSWER_QUERY_TASKS_FIM_FOR_TRAINEE = 107,
//xml-ответы на запросы AdditionalFiles //xml-ответы на запросы AdditionalFiles
TYPE_XMLANSWER_QUERY_TASKS_XML_FIM = 130, TYPE_XMLANSWER_QUERY_TASKS_XML_FIM = 130,
TYPE_XMLANSWER_QUERY_TASKS_XML_AMM = 131, TYPE_XMLANSWER_QUERY_TASKS_XML_AMM = 131,

View File

@@ -107,3 +107,27 @@ QByteArray DBAnswerParser::listTasks(bool result, QList<Task> *listTasks)
//TODO //TODO
return QByteArray(); return QByteArray();
} }
QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList<TaskAmmFim> *listTasks, int trainee_id)
{
QDomDocument commonDOM;
if(! dataParser->loadBlankXML(":/resources/blankXML/ListTasksAMM.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListTasksAMM");
listNode.toElement().setAttribute("trainee_id", QString::number(trainee_id));
for(TaskAmmFim task : *listTasks)
{
//Задача
QDomNode taskNode = commonDOM.createElement("taskAMM");
listNode.appendChild(taskNode);
taskNode.toElement().setAttribute("task_id", QString::number(task.getID()));
taskNode.toElement().setAttribute("title", task.ammProcedure.title);
taskNode.toElement().setAttribute("dmCode", task.ammProcedure.dmCode);
}
dataParser->saveDOMtoXML("ListTasksAMM.xml", &commonDOM);
return commonDOM.toByteArray();
}

View File

@@ -19,6 +19,8 @@ public:
QByteArray listComputers(bool result, QList<Computer> *listComputers); QByteArray listComputers(bool result, QList<Computer> *listComputers);
QByteArray listClassrooms(bool result, QList<Classroom> *listClassrooms); QByteArray listClassrooms(bool result, QList<Classroom> *listClassrooms);
QByteArray listTasks(bool result, QList<Task> *listTasks); QByteArray listTasks(bool result, QList<Task> *listTasks);
QByteArray listTasksAMMofTrainee(bool result, QList<TaskAmmFim> *listTasks, int trainee_id);
signals: signals:
private: private:

View File

@@ -238,6 +238,15 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu
providerDBLMS->editTaskAMM(*(TaskAmmFim*)data); providerDBLMS->editTaskAMM(*(TaskAmmFim*)data);
} }
//emit sigTasksChanged(); //emit sigTasksChanged();
//break;
}
case TypeQueryToDB::TYPE_QUERY_GET_TASKS_AMM_FOR_TRAINEE:
{
QList<TaskAmmFim> listTasks = providerDBLMS->GetListTasksAMMofTrainee(id);
arrayAnswer = dataParser->DbAnswer()->listTasksAMMofTrainee(true, &listTasks, id);
client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE);
break; break;
} }
@@ -251,6 +260,11 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu
providerDBLMS->editTaskFIM(*(TaskAmmFim*)data); providerDBLMS->editTaskFIM(*(TaskAmmFim*)data);
} }
//emit sigTasksChanged(); //emit sigTasksChanged();
//break;
}
case TypeQueryToDB::TYPE_QUERY_GET_TASKS_FIM_FOR_TRAINEE:
{
break; break;
} }
} }

View File

@@ -329,3 +329,21 @@ int ProviderDBLMS::editTaskFIM(TaskAmmFim task)
{ {
return dbLMS->editTaskFIM(task); return dbLMS->editTaskFIM(task);
} }
QList<TaskAmmFim> ProviderDBLMS::GetListTasksAMMofTrainee(int id_trainee)
{
QList<TaskAmmFim> listTasks;
mtxAccess.lock();
if(! dbLMS->DBisConnected())
{
mtxAccess.unlock();
return listTasks;
}
listTasks = dbLMS->getListTasksAMMofTrainee(id_trainee);
mtxAccess.unlock();
return listTasks;
}

View File

@@ -50,6 +50,8 @@ public:
int delTaskFIM(int id); int delTaskFIM(int id);
int editTaskFIM(TaskAmmFim task); int editTaskFIM(TaskAmmFim task);
QList<TaskAmmFim> GetListTasksAMMofTrainee(int id_trainee);
Q_SIGNALS: Q_SIGNALS:
//сигнал о блокировке авторизации //сигнал о блокировке авторизации
void signal_BlockAutorization(bool block); void signal_BlockAutorization(bool block);

View File

@@ -5,5 +5,6 @@
<file>resources/blankXML/ListTrainees.xml</file> <file>resources/blankXML/ListTrainees.xml</file>
<file>resources/icons/switchOff.png</file> <file>resources/icons/switchOff.png</file>
<file>resources/icons/switchOn.png</file> <file>resources/icons/switchOn.png</file>
<file>resources/blankXML/ListTasksAMM.xml</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<ListTasksAMM>
</ListTasksAMM>