Частичная передача задач в Юнити доделал

This commit is contained in:
2025-07-23 16:24:38 +03:00
parent 233289a467
commit 4ed2c95cd9
7 changed files with 237 additions and 10 deletions

View File

@@ -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;
}