From ee97f83856e533a0ad36dea4f480dcc259890369 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Wed, 19 Nov 2025 12:57:46 +0300 Subject: [PATCH] =?UTF-8?q?subproc=20=D0=B2=D1=8B=D0=B3=D1=80.=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D0=91=D0=94=20=D0=B8=20=D0=BE=D1=82=D0=BF=D1=80.=20?= =?UTF-8?q?=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0=D0=BC=20=D0=B2=20?= =?UTF-8?q?=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=D1=85=20AMM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DataBaseLMS/databaselms_tasks.cpp | 87 +++++++++++++++++++- ServerLMS/Systems/Parsers/dbanswerparser.cpp | 10 +++ 2 files changed, 95 insertions(+), 2 deletions(-) diff --git a/DataBaseLMS/databaselms_tasks.cpp b/DataBaseLMS/databaselms_tasks.cpp index 856e9f9..080c201 100644 --- a/DataBaseLMS/databaselms_tasks.cpp +++ b/DataBaseLMS/databaselms_tasks.cpp @@ -176,8 +176,12 @@ int DataBaseLMS::deleteTaskAMM(int id_task) QList DataBaseLMS::selectTasksAMMofTrainee(int id_trainee) { QList 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 " "FROM public.tasks_amm JOIN public.users ON users.user_id = tasks_amm.fk_trainee_id " "WHERE tasks_amm.fk_trainee_id = %1 " @@ -197,10 +201,47 @@ QList DataBaseLMS::selectTasksAMMofTrainee(int id_trainee) task.ammProcedure.dmCode = query.value(2).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(); + } + listTasks.append(task); } } + else + { + resBool = db->rollback(); + return QList(); + } + resBool = db->commit(); return listTasks; } @@ -208,7 +249,12 @@ 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 " + 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 " "WHERE tasks_amm.task_id = %1 " "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.dmCode = query.value(2).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; } diff --git a/ServerLMS/Systems/Parsers/dbanswerparser.cpp b/ServerLMS/Systems/Parsers/dbanswerparser.cpp index 5ef7fe4..40b8563 100644 --- a/ServerLMS/Systems/Parsers/dbanswerparser.cpp +++ b/ServerLMS/Systems/Parsers/dbanswerparser.cpp @@ -161,6 +161,16 @@ QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList taskNode.toElement().setAttribute("title", task.ammProcedure.title); taskNode.toElement().setAttribute("dmCode", task.ammProcedure.dmCode); 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);