mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
Передача назначенных задач FIM из сервера в ГУИ
This commit is contained in:
@@ -540,6 +540,35 @@ int DataBaseLMS::deleteTaskFIM(int id_task)
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> DataBaseLMS::selectTasksFIMofTrainee(int id_trainee)
|
||||
{
|
||||
QList<TaskAmmFim> listTasks;
|
||||
|
||||
QString queryStr = QString("SELECT tasks_fim.task_id, tasks_fim.title, "
|
||||
"trainees.trainee_id "
|
||||
"FROM public.tasks_fim JOIN public.trainees ON trainees.trainee_id = tasks_fim.trainee_task "
|
||||
"WHERE tasks_fim.trainee_task = %1 "
|
||||
"ORDER BY tasks_fim.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.title = query.value(1).toString();
|
||||
|
||||
listTasks.append(task);
|
||||
}
|
||||
}
|
||||
|
||||
return listTasks;
|
||||
}
|
||||
|
||||
Trainee DataBaseLMS::selectTrainee(int id_trainee)
|
||||
{
|
||||
Trainee trainee;
|
||||
|
||||
@@ -62,6 +62,7 @@ protected:
|
||||
int insertTaskFIM(int id_trainee);
|
||||
int updateTaskFIM(TaskAmmFim task);
|
||||
int deleteTaskFIM(int id_task);
|
||||
QList<TaskAmmFim> selectTasksFIMofTrainee(int id_trainee);
|
||||
|
||||
//Обучаемый
|
||||
Trainee selectTrainee(int id_trainee);
|
||||
|
||||
@@ -301,6 +301,11 @@ QList<TaskAmmFim> InterfaceDataBaseLMS::getListTasksAMMofTrainee(int id_trainee)
|
||||
return selectTasksAMMofTrainee(id_trainee);
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> InterfaceDataBaseLMS::getListTasksFIMofTrainee(int id_trainee)
|
||||
{
|
||||
return selectTasksFIMofTrainee(id_trainee);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::newTaskFIM(int id_trainee)
|
||||
{
|
||||
return insertTaskFIM(id_trainee);
|
||||
|
||||
@@ -73,6 +73,7 @@ public:
|
||||
int delTaskAMM(int id);
|
||||
int editTaskAMM(TaskAmmFim task);
|
||||
QList<TaskAmmFim> getListTasksAMMofTrainee(int id_trainee);
|
||||
QList<TaskAmmFim> getListTasksFIMofTrainee(int id_trainee);
|
||||
|
||||
int newTaskFIM(int id_trainee);
|
||||
int delTaskFIM(int id);
|
||||
|
||||
@@ -275,6 +275,7 @@ void RecognizeSystem::recognize(QTcpSocket *socket)
|
||||
case TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS:
|
||||
case TYPE_XMLANSWER_QUERY_DB__LIST_TASKS:
|
||||
case TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE:
|
||||
case TYPE_XMLANSWER_QUERY_TASKS_FIM_FOR_TRAINEE:
|
||||
{
|
||||
QByteArray array;
|
||||
stream.startTransaction();
|
||||
@@ -694,6 +695,28 @@ void RecognizeSystem::xmlParserQueryToDB(PacketType packetType, QByteArray array
|
||||
emit sigAnswerQueryToDB_ListTasksAMMforTrainee(listTasks, trainee_id);
|
||||
}
|
||||
break;
|
||||
case TYPE_XMLANSWER_QUERY_TASKS_FIM_FOR_TRAINEE:
|
||||
{
|
||||
QList<TaskAmmFim> listTasks;
|
||||
int trainee_id = 0;
|
||||
QDomNode listNode = commonDOM.namedItem("ListTasksFIM");
|
||||
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() == "taskFIM")
|
||||
{//Задача
|
||||
TaskAmmFim task;
|
||||
task.setID(taskNode.toElement().attribute("task_id").toInt());
|
||||
task.title = taskNode.toElement().attribute("title");
|
||||
|
||||
listTasks.append(task);
|
||||
}
|
||||
}
|
||||
emit sigAnswerQueryToDB_ListTasksFIMforTrainee(listTasks, trainee_id);
|
||||
}
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ signals:
|
||||
void sigAnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms);
|
||||
void sigAnswerQueryToDB_ListTasks(QList<Task> listTasks);
|
||||
void sigAnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAmmFim>listTasks, int trainee_id);
|
||||
void sigAnswerQueryToDB_ListTasksFIMforTrainee(QList<TaskAmmFim>listTasks, int trainee_id);
|
||||
void sigAnswerQueryTasksXML_FIM(QByteArray array);
|
||||
void sigAnswerQueryTasksXML_AMM(QByteArray array);
|
||||
void sigShowServerDataList(QList<StreamingVersionData*> *versions);
|
||||
|
||||
@@ -156,6 +156,14 @@ QList<TaskAmmFim> ConnectorToServer::getListTasksAMMforTrainee(int trainee_id)
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> ConnectorToServer::getListTasksFIMforTrainee(int trainee_id)
|
||||
{
|
||||
if(mapTasksFIM.contains(trainee_id))
|
||||
return mapTasksFIM.value(trainee_id);
|
||||
else
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
bool ConnectorToServer::isArchivedInstructor(int id)
|
||||
{
|
||||
for(Instructor instructor : listInstructors)
|
||||
@@ -332,6 +340,17 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAm
|
||||
emit signal_UpdateTasksAMMforTrainee(trainee_id);
|
||||
}
|
||||
|
||||
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id)
|
||||
{
|
||||
//Удаляем старые задачи этого обучаемого
|
||||
mapTasksFIM.remove(trainee_id);
|
||||
|
||||
//Добавляем новые
|
||||
mapTasksFIM.insert(trainee_id, listTasks);
|
||||
|
||||
emit signal_UpdateTasksFIMforTrainee(trainee_id);
|
||||
}
|
||||
|
||||
void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array)
|
||||
{
|
||||
this->listTaskFimArray = array;
|
||||
@@ -405,6 +424,7 @@ void ConnectorToServer::bindConnection()
|
||||
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListTasks,this,&ConnectorToServer::slot_AnswerQueryToDB_ListTasks);
|
||||
|
||||
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListTasksAMMforTrainee,this,&ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee);
|
||||
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryToDB_ListTasksFIMforTrainee,this,&ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee);
|
||||
|
||||
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryTasksXML_FIM,this,&ConnectorToServer::slot_AnswerQueryTasksXML_FIM);
|
||||
connect(recognizeSystem,&RecognizeSystem::sigAnswerQueryTasksXML_AMM,this,&ConnectorToServer::slot_AnswerQueryTasksXML_AMM);
|
||||
|
||||
@@ -46,6 +46,7 @@ public:
|
||||
QList<Classroom> getListClassrooms();
|
||||
QList<Task> getListTasks();
|
||||
QList<TaskAmmFim> getListTasksAMMforTrainee(int trainee_id);
|
||||
QList<TaskAmmFim> getListTasksFIMforTrainee(int trainee_id);
|
||||
|
||||
bool isArchivedInstructor(int id);
|
||||
bool isAdminInstructor(int id);
|
||||
@@ -75,6 +76,7 @@ public slots:
|
||||
void slot_AnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms);
|
||||
void slot_AnswerQueryToDB_ListTasks(QList<Task> listTasks);
|
||||
void slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id);
|
||||
void slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id);
|
||||
|
||||
void slot_AnswerQueryTasksXML_FIM(QByteArray array);
|
||||
void slot_AnswerQueryTasksXML_AMM(QByteArray array);
|
||||
@@ -133,6 +135,7 @@ private:
|
||||
QList<Classroom> listClassrooms;
|
||||
QList<Task> listTasks;
|
||||
QMap<int, QList<TaskAmmFim>> mapTasksAMM;
|
||||
QMap<int, QList<TaskAmmFim>> mapTasksFIM;
|
||||
|
||||
QByteArray listTaskFimArray;
|
||||
QByteArray listTaskAmmArray;
|
||||
|
||||
@@ -14,7 +14,8 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
|
||||
treeWidget(nullptr),
|
||||
type(type),
|
||||
userName(""),
|
||||
loginTraineeSelected("")
|
||||
loginTraineeSelected(""),
|
||||
idTraineeSelected(0)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
@@ -159,6 +160,9 @@ void FIMtasksWidget::loadFIMtasksFromXML(QByteArray array)
|
||||
|
||||
void FIMtasksWidget::fillTree()
|
||||
{
|
||||
//Обновление дерева
|
||||
treeWidget->clear();
|
||||
|
||||
for(int i = 0; i < listTaskAmmFim.count(); i++)
|
||||
{/*Задачи*/
|
||||
TaskAmmFim* task = listTaskAmmFim.at(i);
|
||||
@@ -203,6 +207,19 @@ void FIMtasksWidget::fillTree()
|
||||
}
|
||||
}
|
||||
|
||||
void FIMtasksWidget::prepareListTasksForTrainee(QList<TaskAmmFim> listTask)
|
||||
{
|
||||
deleteAllTaskAmmFim();
|
||||
|
||||
for(TaskAmmFim task : listTask)
|
||||
{
|
||||
TaskAmmFim* newTask = new TaskAmmFim();
|
||||
*newTask = task;
|
||||
|
||||
listTaskAmmFim.append(newTask);
|
||||
}
|
||||
}
|
||||
|
||||
void FIMtasksWidget::preparationTreeWidget()
|
||||
{
|
||||
treeWidget->setColumnCount(2);
|
||||
@@ -228,6 +245,7 @@ void FIMtasksWidget::slot_traineeSelected(QString login)
|
||||
{
|
||||
qDebug() << "FIMtasksWidget::slot_traineeSelected thread ID " << QThread::currentThreadId();
|
||||
loginTraineeSelected = login;
|
||||
idTraineeSelected = connectorToServer->getIdTraineeByLogin(loginTraineeSelected);
|
||||
|
||||
if(type == TypeList::listForTrainee)
|
||||
{
|
||||
@@ -236,6 +254,19 @@ void FIMtasksWidget::slot_traineeSelected(QString login)
|
||||
}
|
||||
}
|
||||
|
||||
void FIMtasksWidget::slot_UpdateTasksFIMforTrainee(int trainee_id)
|
||||
{
|
||||
if(type == TypeList::listForTrainee)
|
||||
{
|
||||
if(idTraineeSelected == trainee_id)
|
||||
{
|
||||
QList<TaskAmmFim> listTask = connectorToServer->getListTasksFIMforTrainee(trainee_id);
|
||||
prepareListTasksForTrainee(listTask);
|
||||
fillTree();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FIMtasksWidget::loadTasksFIM()
|
||||
{
|
||||
//Обновление дерева
|
||||
|
||||
@@ -52,11 +52,15 @@ public Q_SLOTS:
|
||||
//слот обработки сигнала о выборе обучаемого
|
||||
void slot_traineeSelected(QString login);
|
||||
|
||||
void slot_UpdateTasksFIMforTrainee(int trainee_id);
|
||||
|
||||
private:
|
||||
TaskAmmFim* getTaskByID(int id);
|
||||
void loadFIMtasksFromXML(QByteArray array);
|
||||
void fillTree();
|
||||
|
||||
void prepareListTasksForTrainee(QList<TaskAmmFim> listTask);
|
||||
|
||||
void preparationTreeWidget();
|
||||
void reSetHeadTreeWidget();
|
||||
void loadTasksFIM();
|
||||
@@ -75,6 +79,7 @@ private:
|
||||
QString userName;
|
||||
QList<TaskAmmFim*> listTaskAmmFim;
|
||||
QString loginTraineeSelected;
|
||||
int idTraineeSelected;
|
||||
};
|
||||
|
||||
#endif // FIMTASKSWIDGET_H
|
||||
|
||||
@@ -21,6 +21,7 @@ ViewerTrainees::ViewerTrainees(ConnectorToServer* connectorToServer, QWidget *pa
|
||||
connect(this, &ViewerTrainees::signal_traineeSelected, ammTasksWidget, &AMMtasksWidget::slot_traineeSelected);
|
||||
|
||||
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMMforTrainee, ammTasksWidget, &AMMtasksWidget::slot_UpdateTasksAMMforTrainee);
|
||||
connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIMforTrainee, fimTasksWidget, &FIMtasksWidget::slot_UpdateTasksFIMforTrainee);
|
||||
|
||||
ui->verticalLayout_2->addWidget(ammTasksWidget);
|
||||
ui->verticalLayout_2->addWidget(fimTasksWidget);
|
||||
|
||||
@@ -131,3 +131,26 @@ QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList<TaskAmmFim>
|
||||
|
||||
return commonDOM.toByteArray();
|
||||
}
|
||||
|
||||
QByteArray DBAnswerParser::listTasksFIMofTrainee(bool result, QList<TaskAmmFim> *listTasks, int trainee_id)
|
||||
{
|
||||
QDomDocument commonDOM;
|
||||
if(! dataParser->loadBlankXML(":/resources/blankXML/ListTasksFIM.xml", &commonDOM))
|
||||
return QByteArray();
|
||||
|
||||
QDomNode listNode = commonDOM.namedItem("ListTasksFIM");
|
||||
listNode.toElement().setAttribute("trainee_id", QString::number(trainee_id));
|
||||
|
||||
for(TaskAmmFim task : *listTasks)
|
||||
{
|
||||
//Задача
|
||||
QDomNode taskNode = commonDOM.createElement("taskFIM");
|
||||
listNode.appendChild(taskNode);
|
||||
taskNode.toElement().setAttribute("task_id", QString::number(task.getID()));
|
||||
taskNode.toElement().setAttribute("title", task.title);
|
||||
}
|
||||
|
||||
dataParser->saveDOMtoXML("ListTasksFIM.xml", &commonDOM);
|
||||
|
||||
return commonDOM.toByteArray();
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ public:
|
||||
QByteArray listTasks(bool result, QList<Task> *listTasks);
|
||||
|
||||
QByteArray listTasksAMMofTrainee(bool result, QList<TaskAmmFim> *listTasks, int trainee_id);
|
||||
QByteArray listTasksFIMofTrainee(bool result, QList<TaskAmmFim> *listTasks, int trainee_id);
|
||||
signals:
|
||||
|
||||
private:
|
||||
|
||||
@@ -265,6 +265,11 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu
|
||||
|
||||
case TypeQueryToDB::TYPE_QUERY_GET_TASKS_FIM_FOR_TRAINEE:
|
||||
{
|
||||
QList<TaskAmmFim> listTasks = providerDBLMS->GetListTasksFIMofTrainee(id);
|
||||
|
||||
arrayAnswer = dataParser->DbAnswer()->listTasksFIMofTrainee(true, &listTasks, id);
|
||||
client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_FIM_FOR_TRAINEE);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,3 +347,21 @@ QList<TaskAmmFim> ProviderDBLMS::GetListTasksAMMofTrainee(int id_trainee)
|
||||
mtxAccess.unlock();
|
||||
return listTasks;
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> ProviderDBLMS::GetListTasksFIMofTrainee(int id_trainee)
|
||||
{
|
||||
QList<TaskAmmFim> listTasks;
|
||||
|
||||
mtxAccess.lock();
|
||||
|
||||
if(! dbLMS->DBisConnected())
|
||||
{
|
||||
mtxAccess.unlock();
|
||||
return listTasks;
|
||||
}
|
||||
|
||||
listTasks = dbLMS->getListTasksFIMofTrainee(id_trainee);
|
||||
|
||||
mtxAccess.unlock();
|
||||
return listTasks;
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@ public:
|
||||
int editTaskFIM(TaskAmmFim task);
|
||||
|
||||
QList<TaskAmmFim> GetListTasksAMMofTrainee(int id_trainee);
|
||||
QList<TaskAmmFim> GetListTasksFIMofTrainee(int id_trainee);
|
||||
|
||||
Q_SIGNALS:
|
||||
//сигнал о блокировке авторизации
|
||||
|
||||
@@ -6,5 +6,6 @@
|
||||
<file>resources/icons/switchOff.png</file>
|
||||
<file>resources/icons/switchOn.png</file>
|
||||
<file>resources/blankXML/ListTasksAMM.xml</file>
|
||||
<file>resources/blankXML/ListTasksFIM.xml</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
3
ServerLMS/resources/blankXML/ListTasksFIM.xml
Normal file
3
ServerLMS/resources/blankXML/ListTasksFIM.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ListTasksFIM>
|
||||
</ListTasksFIM>
|
||||
Reference in New Issue
Block a user