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:
@@ -668,13 +668,12 @@ QList<TaskAmmFim> DataBaseLMS::selectTasksAMMofTrainee(int id_trainee)
|
||||
TaskAmmFim DataBaseLMS::selectTaskAMMbyID(int id_task)
|
||||
{
|
||||
TaskAmmFim task;
|
||||
/*
|
||||
QString queryStr = QString("SELECT tasks_amm.task_id, tasks_amm.title, tasks_amm.dm_code, tasks_amm.status, "
|
||||
"trainees.trainee_id "
|
||||
"FROM public.tasks_amm JOIN public.trainees ON trainees.trainee_id = tasks_amm.trainee_task "
|
||||
"WHERE tasks_amm.trainee_task = %1 "
|
||||
|
||||
QString queryStr = QString("SELECT tasks_amm.task_id, tasks_amm.title, tasks_amm.dm_code, tasks_amm.status "
|
||||
"FROM public.tasks_amm "
|
||||
"WHERE tasks_amm.task_id = %1 "
|
||||
"ORDER BY tasks_amm.task_id ASC").arg(
|
||||
id_trainee);
|
||||
id_task);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
@@ -688,7 +687,6 @@ TaskAmmFim DataBaseLMS::selectTaskAMMbyID(int id_task)
|
||||
task.status = query.value(3).toString();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
return task;
|
||||
}
|
||||
@@ -1067,6 +1065,148 @@ TaskAmmFim DataBaseLMS::selectTaskFIMbyID(int id_task)
|
||||
{
|
||||
TaskAmmFim task;
|
||||
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT tasks_fim.task_id, tasks_fim.title, tasks_fim.status "
|
||||
"FROM public.tasks_fim "
|
||||
"WHERE tasks_fim.task_id = %1 "
|
||||
"ORDER BY tasks_fim.task_id ASC").arg(
|
||||
id_task);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if(query.first())
|
||||
{//Задача
|
||||
|
||||
task.setID(query.value(0).toInt());
|
||||
task.title = query.value(1).toString();
|
||||
task.status = query.value(2).toString();
|
||||
|
||||
//Выгребаем все malfunction для этой задачи
|
||||
queryStr = QString("SELECT malfunctions.malfunction_id, malfunctions.num, malfunctions.dm_code, malfunctions.description, "
|
||||
"tasks_fim.task_id "
|
||||
"FROM public.malfunctions JOIN public.tasks_fim ON tasks_fim.task_id = malfunctions.task_fim_malf "
|
||||
"WHERE malfunctions.task_fim_malf = %1 "
|
||||
"ORDER BY malfunctions.num ASC").arg(
|
||||
task.getID());
|
||||
|
||||
QSqlQuery queryMalf = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryMalf))
|
||||
{
|
||||
while (queryMalf.next())
|
||||
{//Неисправность
|
||||
Malfunction malfanction;
|
||||
int malfunction_id = 0;
|
||||
|
||||
malfunction_id = queryMalf.value(0).toString().toInt();
|
||||
malfanction.num = queryMalf.value(1).toString();
|
||||
malfanction.dmCode = queryMalf.value(2).toString();
|
||||
malfanction.description = queryMalf.value(3).toString();
|
||||
|
||||
//Выгребаем сигналы для этой неисправности
|
||||
queryStr = QString("SELECT malf_sign.sign_id, malf_sign.type, malf_sign.description "
|
||||
"FROM public.malf_sign "
|
||||
"WHERE malf_malf_sign = %1 "
|
||||
"ORDER BY malf_sign.sign_id ASC").arg(
|
||||
QString::number(malfunction_id));
|
||||
|
||||
QSqlQuery querySign = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &querySign))
|
||||
{
|
||||
while (querySign.next())
|
||||
{//Сигналы
|
||||
MalfunctionSign sign;
|
||||
sign.type = querySign.value(1).toString().toInt();
|
||||
sign.description = querySign.value(2).toString();
|
||||
|
||||
malfanction.malfunctionSigns.append(sign);
|
||||
};
|
||||
}
|
||||
|
||||
task.addMalfunction(malfanction);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return task;
|
||||
}
|
||||
|
||||
|
||||
//Выгребаем отчет для этой задачи
|
||||
int report_id = 0;
|
||||
queryStr = QString("SELECT reports.report_id "
|
||||
"FROM public.reports "
|
||||
"WHERE report_task = %1 "
|
||||
"ORDER BY reports.report_id ASC").arg(
|
||||
QString::number(task.getID()));
|
||||
|
||||
QSqlQuery queryReport = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryReport))
|
||||
{
|
||||
if (queryReport.first())
|
||||
{//Отчет
|
||||
report_id = queryReport.value(0).toInt();
|
||||
task.report.id = report_id;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return task;
|
||||
}
|
||||
|
||||
if(report_id)
|
||||
{//Отчет есть
|
||||
//Выгребаем все item отчета
|
||||
|
||||
queryStr = QString("SELECT report_items.item_id, report_items.text, report_items.doc, report_items.dm_code, report_items.title, report_items.result, report_items.item_report, report_items.number "
|
||||
"FROM public.report_items "
|
||||
"WHERE item_report = %1 "
|
||||
"ORDER BY report_items.number ASC").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryItems = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryItems))
|
||||
{
|
||||
while (queryItems.next())
|
||||
{//report_item
|
||||
FIMReportItem reportItem;
|
||||
reportItem.id = queryItems.value(0).toInt();
|
||||
reportItem.text = queryItems.value(1).toString();
|
||||
reportItem.procedure.doc = queryItems.value(2).toString();
|
||||
reportItem.procedure.dmCode = queryItems.value(3).toString();
|
||||
reportItem.procedure.title = queryItems.value(4).toString();
|
||||
reportItem.procedure.result = queryItems.value(5).toString();
|
||||
//item_report
|
||||
//number
|
||||
|
||||
task.report.itemList.append(reportItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return task;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return task;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return task;
|
||||
}
|
||||
|
||||
|
||||
@@ -317,6 +317,16 @@ QList<TaskAmmFim> InterfaceDataBaseLMS::getListTasksFIMofTrainee(int id_trainee)
|
||||
return selectTasksFIMofTrainee(id_trainee);
|
||||
}
|
||||
|
||||
TaskAmmFim InterfaceDataBaseLMS::getTaskAMMbyID(int id_task)
|
||||
{
|
||||
return selectTaskAMMbyID(id_task);
|
||||
}
|
||||
|
||||
TaskAmmFim InterfaceDataBaseLMS::getTaskFIMbyID(int id_task)
|
||||
{
|
||||
return selectTaskFIMbyID(id_task);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::newTaskFIM(TaskAmmFim task, int id_trainee)
|
||||
{
|
||||
return insertTaskFIM(task, id_trainee);
|
||||
|
||||
@@ -76,6 +76,9 @@ public:
|
||||
QList<TaskAmmFim> getListTasksAMMofTrainee(int id_trainee);
|
||||
QList<TaskAmmFim> getListTasksFIMofTrainee(int id_trainee);
|
||||
|
||||
TaskAmmFim getTaskAMMbyID(int id_task);
|
||||
TaskAmmFim getTaskFIMbyID(int id_task);
|
||||
|
||||
int newTaskFIM(TaskAmmFim task, int id_trainee);
|
||||
int delTaskFIM(int id);
|
||||
int editTaskFIM(TaskAmmFim task);
|
||||
|
||||
@@ -317,8 +317,13 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu
|
||||
|
||||
case TypeQueryToDB::TYPE_QUERY_DEL_TASK_AMM_TO_TRAINEE:
|
||||
{
|
||||
if(int id_trainee = providerDBLMS->delTaskAMM(id))
|
||||
int id_task = id;
|
||||
TaskAmmFim task = providerDBLMS->getTaskAMMbyID(id_task);
|
||||
|
||||
if(int id_trainee = providerDBLMS->delTaskAMM(id_task))
|
||||
{
|
||||
task.status = "deleted";
|
||||
|
||||
//Отправка списка задач AMM всем клиентам GUI
|
||||
//sendListTasksAMMofTraineetoClient(client, id_trainee);
|
||||
emit sigStatusTasksAMMofTraineeChanged(id_trainee);
|
||||
@@ -326,15 +331,21 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu
|
||||
//Отправка списка задач AMM клиенту Юнити
|
||||
if(ClientHandler* clientUnity = getUnityClientById(id_trainee))
|
||||
{//Есть такой
|
||||
sendListTasksAMMofTraineetoClient(clientUnity, id_trainee);
|
||||
//sendListTasksAMMofTraineetoClient(clientUnity, id_trainee);
|
||||
sendTaskAMMToClient(clientUnity, id_trainee, task);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TypeQueryToDB::TYPE_QUERY_DEL_TASK_FIM_TO_TRAINEE:
|
||||
{
|
||||
int id_task = id;
|
||||
TaskAmmFim task = providerDBLMS->getTaskFIMbyID(id_task);
|
||||
|
||||
if(int id_trainee = providerDBLMS->delTaskFIM(id))
|
||||
{
|
||||
task.status = "deleted";
|
||||
|
||||
//Отправка списка задач FIM клиенту GUI
|
||||
//sendListTasksFIMofTraineetoClient(client, id_trainee);
|
||||
emit sigStatusTasksFIMofTraineeChanged(id_trainee);
|
||||
@@ -342,7 +353,8 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu
|
||||
//Отправка списка задач FIM клиенту Юнити
|
||||
if(ClientHandler* clientUnity = getUnityClientById(id_trainee))
|
||||
{//Есть такой
|
||||
sendListTasksFIMofTraineetoClient(clientUnity, id_trainee);
|
||||
//sendListTasksFIMofTraineetoClient(clientUnity, id_trainee);
|
||||
sendTaskFIMToClient(clientUnity, id_trainee, task);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -563,6 +575,26 @@ void ProcessingSystem::sendListTasksFIMofTraineeByIDtoClient(ClientHandler *clie
|
||||
client->sendFileBlockByteArray(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_FIM_OF_TRAINEE);
|
||||
}
|
||||
|
||||
void ProcessingSystem::sendTaskAMMToClient(ClientHandler *client, int id_trainee, TaskAmmFim task)
|
||||
{
|
||||
QList<TaskAmmFim> listTasks;
|
||||
listTasks.append(task);
|
||||
|
||||
QByteArray arrayAnswer = dataParser->DbAnswer()->listTasksAMMofTrainee(true, &listTasks, id_trainee, false);
|
||||
//client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_AMM_OF_TRAINEE);
|
||||
client->sendFileBlockByteArray(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_AMM_OF_TRAINEE);
|
||||
}
|
||||
|
||||
void ProcessingSystem::sendTaskFIMToClient(ClientHandler *client, int id_trainee, TaskAmmFim task)
|
||||
{
|
||||
QList<TaskAmmFim> listTasks;
|
||||
listTasks.append(task);
|
||||
|
||||
QByteArray arrayAnswer = dataParser->DbAnswer()->listTasksFIMofTrainee(true, &listTasks, id_trainee, false);
|
||||
//client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_FIM_OF_TRAINEE);
|
||||
client->sendFileBlockByteArray(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_FIM_OF_TRAINEE);
|
||||
}
|
||||
|
||||
void ProcessingSystem::sendTaskListToUnity(ClientHandler *client)
|
||||
{
|
||||
//Отправка списков задач клиенту Юнити
|
||||
|
||||
@@ -46,6 +46,9 @@ public:
|
||||
void sendListTasksAMMofTraineeByIDtoClient(ClientHandler* client, int id_trainee, QList<int> listID);
|
||||
void sendListTasksFIMofTraineeByIDtoClient(ClientHandler* client, int id_trainee, QList<int> listID);
|
||||
|
||||
void sendTaskAMMToClient(ClientHandler* client, int id_trainee, TaskAmmFim task);
|
||||
void sendTaskFIMToClient(ClientHandler* client, int id_trainee, TaskAmmFim task);
|
||||
|
||||
ClientHandler* getUnityClientById(int id);
|
||||
void processingClientDeAutorization(QString login);
|
||||
signals:
|
||||
|
||||
@@ -437,3 +437,39 @@ QList<TaskAmmFim> ProviderDBLMS::GetListTasksFIMofTrainee(int id_trainee)
|
||||
mtxAccess.unlock();
|
||||
return listTasks;
|
||||
}
|
||||
|
||||
TaskAmmFim ProviderDBLMS::getTaskAMMbyID(int id_task)
|
||||
{
|
||||
TaskAmmFim task;
|
||||
|
||||
mtxAccess.lock();
|
||||
|
||||
if(! dbLMS->DBisConnected())
|
||||
{
|
||||
mtxAccess.unlock();
|
||||
return task;
|
||||
}
|
||||
|
||||
task = dbLMS->getTaskAMMbyID(id_task);
|
||||
|
||||
mtxAccess.unlock();
|
||||
return task;
|
||||
}
|
||||
|
||||
TaskAmmFim ProviderDBLMS::getTaskFIMbyID(int id_task)
|
||||
{
|
||||
TaskAmmFim task;
|
||||
|
||||
mtxAccess.lock();
|
||||
|
||||
if(! dbLMS->DBisConnected())
|
||||
{
|
||||
mtxAccess.unlock();
|
||||
return task;
|
||||
}
|
||||
|
||||
task = dbLMS->getTaskFIMbyID(id_task);
|
||||
|
||||
mtxAccess.unlock();
|
||||
return task;
|
||||
}
|
||||
|
||||
@@ -62,6 +62,9 @@ public:
|
||||
QList<TaskAmmFim> GetListTasksAMMofTrainee(int id_trainee);
|
||||
QList<TaskAmmFim> GetListTasksFIMofTrainee(int id_trainee);
|
||||
|
||||
TaskAmmFim getTaskAMMbyID(int id_task);
|
||||
TaskAmmFim getTaskFIMbyID(int id_task);
|
||||
|
||||
Q_SIGNALS:
|
||||
//сигнал о блокировке авторизации
|
||||
void signal_BlockAutorization(bool block);
|
||||
|
||||
Reference in New Issue
Block a user