Репорты о вып-и задач. в первом приближении.

This commit is contained in:
2025-05-15 17:37:39 +03:00
parent 77096e2a61
commit 0f7d9e6531
10 changed files with 247 additions and 13 deletions

View File

@@ -543,6 +543,17 @@ int DataBaseLMS::updateTaskAMM(TaskAmmFim task)
return queryExecInt(queryStr);
}
int DataBaseLMS::updateStatusTaskAMM(int task_id, QString status)
{
QString queryStr = QString("UPDATE public.tasks_amm SET status = '%1' "
"WHERE task_id = %2 "
"RETURNING tasks_amm.task_id").arg(
status,
QString::number(task_id) );
return queryExecInt(queryStr);
}
int DataBaseLMS::deleteTaskAMM(int id_task)
{
QString queryStr;
@@ -677,6 +688,17 @@ int DataBaseLMS::updateTaskFIM(TaskAmmFim task)
return queryExecInt(queryStr);
}
int DataBaseLMS::updateStatusTaskFIM(int task_id, QString status)
{
QString queryStr = QString("UPDATE public.tasks_fim SET status = '%1' "
"WHERE task_id = %2 "
"RETURNING tasks_fim.task_id").arg(
status,
QString::number(task_id) );
return queryExecInt(queryStr);
}
int DataBaseLMS::deleteTaskFIM(int id_task)
{
QString queryStr;
@@ -801,6 +823,134 @@ QList<TaskAmmFim> DataBaseLMS::selectTasksFIMofTrainee(int id_trainee)
return listTasks;
}
int DataBaseLMS::deleteReportFIM(int task_id)
{
QString queryStr;
bool resBool = false;
int report_id = 0;
resBool = db->transaction();
queryStr = QString("SELECT reports.report_id "
"FROM public.reports "
"WHERE report_task = %1 "
"ORDER BY reports.report_id ASC").arg(
QString::number(task_id));
QSqlQuery query = QSqlQuery(*db);
if(queryExec(queryStr, &query))
{
if (query.first())
{//Отчет
report_id = query.value(0).toInt();
}
}
if(!report_id)
{
resBool = db->rollback();
return 0;
}
queryStr = QString("DELETE FROM public.report_items "
"WHERE item_report = %1 ").arg(
QString::number(report_id));
QSqlQuery query1 = QSqlQuery(*db);
if(!queryExec(queryStr, &query1))
{
resBool = db->rollback();
return 0;
}
queryStr = QString("DELETE FROM public.reports "
"WHERE report_id = %1 ").arg(
QString::number(report_id));
if(!queryExec(queryStr, &query1))
{
resBool = db->rollback();
return 0;
}
queryStr = QString("UPDATE public.tasks_fim SET status = '%1' "
"WHERE task_id = %2 ").arg(
"new",
QString::number(task_id) );
if(!queryExec(queryStr, &query1))
{
resBool = db->rollback();
return 0;
}
resBool = db->commit();
return report_id;
}
int DataBaseLMS::insertReportFIM(TaskAmmFim task)
{
QString queryStr;
bool resBool = false;
resBool = db->transaction();
//task.title = task.title.replace("'", "''"); //Задваиваем одинарные кавычки
queryStr = QString("INSERT INTO public.reports (report_task) "
"VALUES (%1) "
"RETURNING reports.report_id").arg(
task.getID());
int report_id = queryExecInt(queryStr);
if(!report_id)
{
resBool = db->rollback();
return 0;
}
int number = 0;
for(FIMReportItem reportItem : task.report.itemList)
{
queryStr = QString("INSERT INTO public.report_items (text, doc, dm_code, title, result, item_report, number) "
"VALUES ('%1', '%2', '%3', '%4', '%5', %6, %7) "
"RETURNING report_items.item_id").arg(
reportItem.text,
reportItem.procedure.doc,
reportItem.procedure.dmCode,
reportItem.procedure.title,
reportItem.procedure.result,
QString::number(report_id),
QString::number(++number));
if(!queryExecInt(queryStr))
{
resBool = db->rollback();
return 0;
}
}
/*
queryStr = QString("UPDATE public.tasks_fim SET status = '%1' "
"WHERE task_id = %2 ").arg(
"checkup",
QString::number(task.getID()) );
QSqlQuery query1 = QSqlQuery(*db);
if(!queryExec(queryStr, &query1))
{
resBool = db->rollback();
return 0;
}
*/
resBool = db->commit();
return report_id;
}
Trainee DataBaseLMS::selectTrainee(int id_trainee)
{
Trainee trainee;

View File

@@ -68,14 +68,19 @@ protected:
//Задача AMM
int insertTaskAMM(TaskAmmFim task, int id_trainee);
int updateTaskAMM(TaskAmmFim task);
int updateStatusTaskAMM(int task_id, QString status);
int deleteTaskAMM(int id_task);
QList<TaskAmmFim> selectTasksAMMofTrainee(int id_trainee);
//Задача FIM
int insertTaskFIM(TaskAmmFim task, int id_trainee);
int updateTaskFIM(TaskAmmFim task);
int updateStatusTaskFIM(int task_id, QString status);
int deleteTaskFIM(int id_task);
QList<TaskAmmFim> selectTasksFIMofTrainee(int id_trainee);
int deleteReportFIM(int task_id);
int insertReportFIM(TaskAmmFim task);
//Обучаемый
Trainee selectTrainee(int id_trainee);
QList<Trainee> selectAllTraineesInGroup(int id_group);

View File

@@ -307,6 +307,11 @@ int InterfaceDataBaseLMS::editTaskAMM(TaskAmmFim task)
return updateTaskAMM(task);
}
int InterfaceDataBaseLMS::editStatusTaskAMM(int task_id, QString status)
{
return updateStatusTaskAMM(task_id, status);
}
QList<TaskAmmFim> InterfaceDataBaseLMS::getListTasksAMMofTrainee(int id_trainee)
{
return selectTasksAMMofTrainee(id_trainee);
@@ -324,6 +329,7 @@ int InterfaceDataBaseLMS::newTaskFIM(TaskAmmFim task, int id_trainee)
int InterfaceDataBaseLMS::delTaskFIM(int id)
{
deleteReportFIM(id);
return deleteTaskFIM(id);
}
@@ -332,6 +338,24 @@ int InterfaceDataBaseLMS::editTaskFIM(TaskAmmFim task)
return updateTaskFIM(task);
}
int InterfaceDataBaseLMS::editStatusTaskFIM(int task_id, QString status)
{
return updateStatusTaskFIM(task_id, status);
}
int InterfaceDataBaseLMS::replaceReportFIM(TaskAmmFim task)
{
deleteReportFIM(task.getID());
if(int report_id = insertReportFIM(task))
{
updateStatusTaskFIM(task.getID(), "checkup");
return report_id;
}
return 0;
}
int InterfaceDataBaseLMS::newTrainee(int id_group)
{
return insertTrainee(id_group);

View File

@@ -72,12 +72,16 @@ public:
int newTaskAMM(TaskAmmFim task, int id_trainee);
int delTaskAMM(int id);
int editTaskAMM(TaskAmmFim task);
int editStatusTaskAMM(int task_id, QString status);
QList<TaskAmmFim> getListTasksAMMofTrainee(int id_trainee);
QList<TaskAmmFim> getListTasksFIMofTrainee(int id_trainee);
int newTaskFIM(TaskAmmFim task, int id_trainee);
int delTaskFIM(int id);
int editTaskFIM(TaskAmmFim task);
int editStatusTaskFIM(int task_id, QString status);
int replaceReportFIM(TaskAmmFim task);
int newTrainee(int id_group);
int delTrainee(int id);

View File

@@ -51,7 +51,7 @@ public:
FIMReportItem(){};
~FIMReportItem(){};
public:
QString title; // текст, вводимый обучаемым
QString text; // текст, вводимый обучаемым
ProcedureID procedure; // ссылка на процедуру, при необходимости
};

View File

@@ -21,8 +21,9 @@ enum TypeQueryToDB{
TYPE_QUERY_DEL_TASK_AMM_TO_TRAINEE,
TYPE_QUERY_DEL_TASK_FIM_TO_TRAINEE,
TYPE_QUERY_EDIT_TASK_AMM_TO_TRAINEE,
TYPE_QUERY_EDIT_TASK_FIM_TO_TRAINEE
TYPE_QUERY_SET_REPORT_TASK_AMM_TO_TRAINEE,
TYPE_QUERY_SET_REPORT_TASK_FIM_TO_TRAINEE
};
#endif // TYPEQUERYTODB_H

View File

@@ -134,7 +134,7 @@ void ProcessParser::clientUnityTaskAMMreport(QXmlStreamReader &xmlReader, Client
void* data = nullptr;
data = &task;
ClientQueryToDB queryToDB;
queryToDB.typeQuery = TypeQueryToDB::TYPE_QUERY_EDIT_TASK_AMM_TO_TRAINEE;
queryToDB.typeQuery = TypeQueryToDB::TYPE_QUERY_SET_REPORT_TASK_AMM_TO_TRAINEE;
processingSystem->processingClientQueryToDB(client, queryToDB, trainee_id, data);
}
}
@@ -176,13 +176,41 @@ void ProcessParser::clientUnityTaskFIMreport(QXmlStreamReader &xmlReader, Client
}
}
//TODO -------------- (!Заглушка!) Отчет о выполнении
FIMReport report;
FIMReportItem reportItem;
QString text; // текст, вводимый обучаемым
ProcedureID procedure; // ссылка на процедуру, при необходимости
text = "1. Выполнил такую процедуру";
procedure.doc = "fim";
procedure.title = "Процедура №1";
procedure.dmCode = "RRJ-N-27-92-00-51D01-420A-A";
procedure.result = "viewed";
reportItem.text = text;
reportItem.procedure = procedure;
report.itemList.append(reportItem);
text = "2. Выполнил такую процедуру";
procedure.doc = "fim";
procedure.title = "Процедура №2";
procedure.dmCode = "RRJ-N-28-22-00-01A01-420A-A";
procedure.result = "viewed";
reportItem.text = text;
reportItem.procedure = procedure;
report.itemList.append(reportItem);
task.report = report;
//-----------------
listTasks.append(task);
//Изменение задачи
void* data = nullptr;
data = &task;
ClientQueryToDB queryToDB;
queryToDB.typeQuery = TypeQueryToDB::TYPE_QUERY_EDIT_TASK_FIM_TO_TRAINEE;
queryToDB.typeQuery = TypeQueryToDB::TYPE_QUERY_SET_REPORT_TASK_FIM_TO_TRAINEE;
processingSystem->processingClientQueryToDB(client, queryToDB, trainee_id, data);
}
}

View File

@@ -333,20 +333,24 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu
break;
}
case TypeQueryToDB::TYPE_QUERY_EDIT_TASK_AMM_TO_TRAINEE:
case TypeQueryToDB::TYPE_QUERY_SET_REPORT_TASK_AMM_TO_TRAINEE:
{
if(int id_trainee = providerDBLMS->editTaskAMM(*(TaskAmmFim*)data))
{
TaskAmmFim* task = (TaskAmmFim*)data;
if(task->status == "completed")
if( int id_task = providerDBLMS->editStatusTaskAMM(task->getID(), "checkup") )
{
}
}
break;
}
case TypeQueryToDB::TYPE_QUERY_EDIT_TASK_FIM_TO_TRAINEE:
case TypeQueryToDB::TYPE_QUERY_SET_REPORT_TASK_FIM_TO_TRAINEE:
{
if(int id_trainee = providerDBLMS->editTaskFIM(*(TaskAmmFim*)data))
{
TaskAmmFim* task = (TaskAmmFim*)data;
if(task->status == "completed")
if(int id_report = providerDBLMS->replaceReportFIM(*task))
{
}
}
break;
}
}

View File

@@ -372,6 +372,11 @@ int ProviderDBLMS::editTaskAMM(TaskAmmFim task)
return dbLMS->editTaskAMM(task);
}
int ProviderDBLMS::editStatusTaskAMM(int task_id, QString status)
{
return dbLMS->editStatusTaskAMM(task_id, status);
}
int ProviderDBLMS::newTaskFIM(TaskAmmFim task, int id_trainee)
{
return dbLMS->newTaskFIM(task, id_trainee);
@@ -387,6 +392,16 @@ int ProviderDBLMS::editTaskFIM(TaskAmmFim task)
return dbLMS->editTaskFIM(task);
}
int ProviderDBLMS::editStatusTaskFIM(int task_id, QString status)
{
return dbLMS->editStatusTaskFIM(task_id, status);
}
int ProviderDBLMS::replaceReportFIM(TaskAmmFim task)
{
return dbLMS->replaceReportFIM(task);
}
QList<TaskAmmFim> ProviderDBLMS::GetListTasksAMMofTrainee(int id_trainee)
{
QList<TaskAmmFim> listTasks;

View File

@@ -51,10 +51,13 @@ public:
int newTaskAMM(TaskAmmFim task, int id_trainee);
int delTaskAMM(int id);
int editTaskAMM(TaskAmmFim task);
int editStatusTaskAMM(int task_id, QString status);
int newTaskFIM(TaskAmmFim task, int id_trainee);
int delTaskFIM(int id);
int editTaskFIM(TaskAmmFim task);
int editStatusTaskFIM(int task_id, QString status);
int replaceReportFIM(TaskAmmFim task);
QList<TaskAmmFim> GetListTasksAMMofTrainee(int id_trainee);
QList<TaskAmmFim> GetListTasksFIMofTrainee(int id_trainee);