subproc выгр. из БД и отпр. клиентам в списках AMM

This commit is contained in:
2025-11-19 12:57:46 +03:00
parent 74bdac7540
commit ee97f83856
2 changed files with 95 additions and 2 deletions

View File

@@ -176,8 +176,12 @@ int DataBaseLMS::deleteTaskAMM(int id_task)
QList<TaskAmmFim> DataBaseLMS::selectTasksAMMofTrainee(int id_trainee) QList<TaskAmmFim> DataBaseLMS::selectTasksAMMofTrainee(int id_trainee)
{ {
QList<TaskAmmFim> listTasks; QList<TaskAmmFim> listTasks;
QString queryStr;
bool resBool = false;
QString queryStr = QString("SELECT tasks_amm.task_id, tasks_amm.title, tasks_amm.dm_code, tasks_amm.status, " resBool = db->transaction();
queryStr = QString("SELECT tasks_amm.task_id, tasks_amm.title, tasks_amm.dm_code, tasks_amm.status, "
"users.user_id " "users.user_id "
"FROM public.tasks_amm JOIN public.users ON users.user_id = tasks_amm.fk_trainee_id " "FROM public.tasks_amm JOIN public.users ON users.user_id = tasks_amm.fk_trainee_id "
"WHERE tasks_amm.fk_trainee_id = %1 " "WHERE tasks_amm.fk_trainee_id = %1 "
@@ -197,10 +201,47 @@ QList<TaskAmmFim> DataBaseLMS::selectTasksAMMofTrainee(int id_trainee)
task.ammProcedure.dmCode = query.value(2).toString(); task.ammProcedure.dmCode = query.value(2).toString();
task.status = query.value(3).toString(); task.status = query.value(3).toString();
//Выгребаем все subproc для этой задачи
queryStr = QString("SELECT subprocs.subproc_id, subprocs.dm_code, subprocs.title, subprocs.canplay, "
"tasks_amm.task_id "
"FROM public.subprocs JOIN public.tasks_amm ON tasks_amm.task_id = subprocs.fk_task_amm_id "
"WHERE subprocs.fk_task_amm_id = %1 "
"ORDER BY subprocs.subproc_id ASC").arg(
task.getID());
QSqlQuery querySubProc = QSqlQuery(*db);
if(queryExec(queryStr, &querySubProc))
{
while (querySubProc.next())
{//Подпроцедура
SubProc subProc;
int subproc_id = 0;
subproc_id = querySubProc.value(0).toString().toInt();
subProc.setDmCode(querySubProc.value(1).toString());
subProc.setTitle(querySubProc.value(2).toString());
subProc.setModeListStr(querySubProc.value(3).toString());
task.listSubProc.append(subProc);
};
}
else
{
resBool = db->rollback();
return QList<TaskAmmFim>();
}
listTasks.append(task); listTasks.append(task);
} }
} }
else
{
resBool = db->rollback();
return QList<TaskAmmFim>();
}
resBool = db->commit();
return listTasks; return listTasks;
} }
@@ -208,7 +249,12 @@ TaskAmmFim DataBaseLMS::selectTaskAMMbyID(int id_task)
{ {
TaskAmmFim task; TaskAmmFim task;
QString queryStr = QString("SELECT tasks_amm.task_id, tasks_amm.title, tasks_amm.dm_code, tasks_amm.status " QString queryStr;
bool resBool = false;
resBool = db->transaction();
queryStr = QString("SELECT tasks_amm.task_id, tasks_amm.title, tasks_amm.dm_code, tasks_amm.status "
"FROM public.tasks_amm " "FROM public.tasks_amm "
"WHERE tasks_amm.task_id = %1 " "WHERE tasks_amm.task_id = %1 "
"ORDER BY tasks_amm.task_id ASC").arg( "ORDER BY tasks_amm.task_id ASC").arg(
@@ -224,9 +270,46 @@ TaskAmmFim DataBaseLMS::selectTaskAMMbyID(int id_task)
task.ammProcedure.title = query.value(1).toString(); task.ammProcedure.title = query.value(1).toString();
task.ammProcedure.dmCode = query.value(2).toString(); task.ammProcedure.dmCode = query.value(2).toString();
task.status = query.value(3).toString(); task.status = query.value(3).toString();
//Выгребаем все subproc для этой задачи
queryStr = QString("SELECT subprocs.subproc_id, subprocs.dm_code, subprocs.title, subprocs.canplay, "
"tasks_amm.task_id "
"FROM public.subprocs JOIN public.tasks_amm ON tasks_amm.task_id = subprocs.fk_task_amm_id "
"WHERE subprocs.fk_task_amm_id = %1 "
"ORDER BY subprocs.subproc_id ASC").arg(
task.getID());
QSqlQuery querySubProc = QSqlQuery(*db);
if(queryExec(queryStr, &querySubProc))
{
while (querySubProc.next())
{//Подпроцедура
SubProc subProc;
int subproc_id = 0;
subproc_id = querySubProc.value(0).toString().toInt();
subProc.setDmCode(querySubProc.value(1).toString());
subProc.setTitle(querySubProc.value(2).toString());
subProc.setModeListStr(querySubProc.value(3).toString());
task.listSubProc.append(subProc);
};
} }
else
{
resBool = db->rollback();
return TaskAmmFim();
}
}
}
else
{
resBool = db->rollback();
return TaskAmmFim();
} }
resBool = db->commit();
return task; return task;
} }

View File

@@ -161,6 +161,16 @@ QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList<TaskAmmFim>
taskNode.toElement().setAttribute("title", task.ammProcedure.title); taskNode.toElement().setAttribute("title", task.ammProcedure.title);
taskNode.toElement().setAttribute("dmCode", task.ammProcedure.dmCode); taskNode.toElement().setAttribute("dmCode", task.ammProcedure.dmCode);
taskNode.toElement().setAttribute("status", task.status); taskNode.toElement().setAttribute("status", task.status);
for(SubProc subProc : task.listSubProc)
{//Подпроцедура
QDomNode subProcNode = commonDOM.createElement("SubProc");
taskNode.appendChild(subProcNode);
subProcNode.toElement().setAttribute("dmCode", subProc.getDmCode());
subProcNode.toElement().setAttribute("title", subProc.getTitle());
subProcNode.toElement().setAttribute("canplay", subProc.getModeListStr());
}
} }
Tools::saveDOMtoXML("ListTasksAMM.xml", &commonDOM); Tools::saveDOMtoXML("ListTasksAMM.xml", &commonDOM);