mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Передача назначенных задач из сервера в ГУИ
This commit is contained in:
@@ -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) "
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
3
ServerLMS/resources/blankXML/ListTasksAMM.xml
Normal file
3
ServerLMS/resources/blankXML/ListTasksAMM.xml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ListTasksAMM>
|
||||||
|
</ListTasksAMM>
|
||||||
Reference in New Issue
Block a user