mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Report upgrade WH
This commit is contained in:
@@ -5,7 +5,8 @@ common_info_for_project(DataBaseInterface)
|
||||
add_library(DataBaseInterface SHARED
|
||||
DataBaseLMS_global.h
|
||||
databaselms.cpp
|
||||
databaselms_tasks.cpp
|
||||
databaselms_tasks_amm.cpp
|
||||
databaselms_tasks_fim.cpp
|
||||
databaselms_groups.cpp
|
||||
databaselms_users.cpp
|
||||
databaselms_instructors.cpp
|
||||
|
||||
314
LibDataBaseInterface/databaselms_tasks_amm.cpp
Normal file
314
LibDataBaseInterface/databaselms_tasks_amm.cpp
Normal file
@@ -0,0 +1,314 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
|
||||
int DataBaseLMS::insertTaskAMM(TaskAmmFim task, int id_trainee)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
task.ammProcedure.title = task.ammProcedure.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.tasks_amm (title, dm_code, fk_trainee_id) "
|
||||
"VALUES ('%1', '%2', %3) "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
task.ammProcedure.title,
|
||||
task.ammProcedure.dmCode,
|
||||
QString::number(id_trainee));
|
||||
|
||||
int task_id = queryExecInt(queryStr);
|
||||
if(!task_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
for(SubProc subProc : task.listSubProc)
|
||||
{
|
||||
subProc.setTitle(subProc.getTitle().replace("'", "''")); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.subprocs (dm_code, title, canplay, fk_task_amm_id) "
|
||||
"VALUES ('%1', '%2', '%3', %4) "
|
||||
"RETURNING subprocs.subproc_id").arg(
|
||||
subProc.getDmCode(),
|
||||
subProc.getTitle(),
|
||||
subProc.getModeListStr(),
|
||||
QString::number(task_id));
|
||||
|
||||
int subproc_id = queryExecInt(queryStr);
|
||||
if(!subproc_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
resBool = db->commit();
|
||||
return task_id;
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTaskAMM(TaskAmmFim task)
|
||||
{
|
||||
task.ammProcedure.title = task.ammProcedure.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
QString queryStr = QString("UPDATE public.tasks_amm SET title = '%1', dm_code = '%2', status = '%3' "
|
||||
"WHERE task_id = %4 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
task.ammProcedure.title,
|
||||
task.ammProcedure.dmCode,
|
||||
task.status,
|
||||
QString::number(task.getID()) );
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateStatusTaskAMM(int task_id, QString status)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_amm ON users.user_id = tasks_amm.fk_trainee_id "
|
||||
"WHERE tasks_amm.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(task_id));
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Обучаемый
|
||||
id_trainee = query.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("UPDATE public.tasks_amm SET status = '%1' "
|
||||
"WHERE task_id = %2 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
status,
|
||||
QString::number(task_id) );
|
||||
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteTaskAMM(int id_task)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_amm ON users.user_id = tasks_amm.fk_trainee_id "
|
||||
"WHERE tasks_amm.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
QSqlQuery queryUserSEL = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryUserSEL))
|
||||
{
|
||||
if (queryUserSEL.first())
|
||||
{//Обучаемый
|
||||
id_trainee = queryUserSEL.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("DELETE FROM public.subprocs "
|
||||
"WHERE fk_task_amm_id = %1 ").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
QSqlQuery querySubProcDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &querySubProcDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//--------------------
|
||||
queryStr = QString("DELETE FROM public.tasks_amm "
|
||||
"WHERE task_id = %1 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> DataBaseLMS::selectTasksAMMofTrainee(int id_trainee)
|
||||
{
|
||||
QList<TaskAmmFim> listTasks;
|
||||
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, "
|
||||
"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 "
|
||||
"ORDER BY tasks_amm.task_id ASC").arg(
|
||||
id_trainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Задача
|
||||
TaskAmmFim task;
|
||||
|
||||
task.setID(query.value(0).toInt());
|
||||
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 QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
listTasks.append(task);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return listTasks;
|
||||
}
|
||||
|
||||
TaskAmmFim DataBaseLMS::selectTaskAMMbyID(int id_task)
|
||||
{
|
||||
TaskAmmFim task;
|
||||
|
||||
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(
|
||||
id_task);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Задача
|
||||
task.setID(query.value(0).toInt());
|
||||
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;
|
||||
}
|
||||
@@ -4,316 +4,6 @@
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
|
||||
int DataBaseLMS::insertTaskAMM(TaskAmmFim task, int id_trainee)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
task.ammProcedure.title = task.ammProcedure.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.tasks_amm (title, dm_code, fk_trainee_id) "
|
||||
"VALUES ('%1', '%2', %3) "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
task.ammProcedure.title,
|
||||
task.ammProcedure.dmCode,
|
||||
QString::number(id_trainee));
|
||||
|
||||
int task_id = queryExecInt(queryStr);
|
||||
if(!task_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
for(SubProc subProc : task.listSubProc)
|
||||
{
|
||||
subProc.setTitle(subProc.getTitle().replace("'", "''")); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.subprocs (dm_code, title, canplay, fk_task_amm_id) "
|
||||
"VALUES ('%1', '%2', '%3', %4) "
|
||||
"RETURNING subprocs.subproc_id").arg(
|
||||
subProc.getDmCode(),
|
||||
subProc.getTitle(),
|
||||
subProc.getModeListStr(),
|
||||
QString::number(task_id));
|
||||
|
||||
int subproc_id = queryExecInt(queryStr);
|
||||
if(!subproc_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
resBool = db->commit();
|
||||
return task_id;
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTaskAMM(TaskAmmFim task)
|
||||
{
|
||||
task.ammProcedure.title = task.ammProcedure.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
QString queryStr = QString("UPDATE public.tasks_amm SET title = '%1', dm_code = '%2', status = '%3' "
|
||||
"WHERE task_id = %4 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
task.ammProcedure.title,
|
||||
task.ammProcedure.dmCode,
|
||||
task.status,
|
||||
QString::number(task.getID()) );
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateStatusTaskAMM(int task_id, QString status)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_amm ON users.user_id = tasks_amm.fk_trainee_id "
|
||||
"WHERE tasks_amm.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(task_id));
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Обучаемый
|
||||
id_trainee = query.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("UPDATE public.tasks_amm SET status = '%1' "
|
||||
"WHERE task_id = %2 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
status,
|
||||
QString::number(task_id) );
|
||||
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteTaskAMM(int id_task)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_amm ON users.user_id = tasks_amm.fk_trainee_id "
|
||||
"WHERE tasks_amm.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
QSqlQuery queryUserSEL = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryUserSEL))
|
||||
{
|
||||
if (queryUserSEL.first())
|
||||
{//Обучаемый
|
||||
id_trainee = queryUserSEL.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("DELETE FROM public.subprocs "
|
||||
"WHERE fk_task_amm_id = %1 ").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
QSqlQuery querySubProcDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &querySubProcDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//--------------------
|
||||
queryStr = QString("DELETE FROM public.tasks_amm "
|
||||
"WHERE task_id = %1 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> DataBaseLMS::selectTasksAMMofTrainee(int id_trainee)
|
||||
{
|
||||
QList<TaskAmmFim> listTasks;
|
||||
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, "
|
||||
"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 "
|
||||
"ORDER BY tasks_amm.task_id ASC").arg(
|
||||
id_trainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Задача
|
||||
TaskAmmFim task;
|
||||
|
||||
task.setID(query.value(0).toInt());
|
||||
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 QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
listTasks.append(task);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return listTasks;
|
||||
}
|
||||
|
||||
TaskAmmFim DataBaseLMS::selectTaskAMMbyID(int id_task)
|
||||
{
|
||||
TaskAmmFim task;
|
||||
|
||||
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(
|
||||
id_task);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Задача
|
||||
task.setID(query.value(0).toInt());
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
int DataBaseLMS::insertTaskFIM(TaskAmmFim task, int id_trainee)
|
||||
{
|
||||
QString queryStr;
|
||||
@@ -340,12 +30,14 @@ int DataBaseLMS::insertTaskFIM(TaskAmmFim task, int id_trainee)
|
||||
{
|
||||
malfanction.description = malfanction.description.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.malfunctions (num, dm_code, description, fk_task_fim_id) "
|
||||
"VALUES ('%1', '%2', '%3', %4) "
|
||||
queryStr = QString("INSERT INTO public.malfunctions (num, dm_code, description, go_name, obj_name, fk_task_fim_id) "
|
||||
"VALUES ('%1', '%2', '%3', '%4', '%5', %6) "
|
||||
"RETURNING malfunctions.malfunction_id").arg(
|
||||
malfanction.num,
|
||||
malfanction.dmCode,
|
||||
malfanction.description,
|
||||
malfanction.goName,
|
||||
malfanction.objName,
|
||||
QString::number(task_id));
|
||||
|
||||
int malfunction_id = queryExecInt(queryStr);
|
||||
@@ -471,6 +163,17 @@ int DataBaseLMS::updateStatusTaskFIM(int task_id, QString status)
|
||||
return 0;
|
||||
}
|
||||
|
||||
queryStr = QString("DELETE FROM public.report_wh_items "
|
||||
"WHERE fk_report_id = %1 ").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryWhItemsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryWhItemsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
queryStr = QString("DELETE FROM public.reports "
|
||||
"WHERE report_id = %1 ").arg(
|
||||
QString::number(report_id));
|
||||
@@ -601,6 +304,17 @@ int DataBaseLMS::deleteTaskFIM(int id_task)
|
||||
return 0;
|
||||
}
|
||||
|
||||
queryStr = QString("DELETE FROM public.report_wh_items "
|
||||
"WHERE fk_report_id = %1 ").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryWhItemsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryWhItemsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
queryStr = QString("DELETE FROM public.reports "
|
||||
"WHERE report_id = %1 ").arg(
|
||||
QString::number(report_id));
|
||||
@@ -657,7 +371,7 @@ QList<TaskAmmFim> DataBaseLMS::selectTasksFIMofTrainee(int id_trainee)
|
||||
task.status = query.value(2).toString();
|
||||
|
||||
//Выгребаем все malfunction для этой задачи
|
||||
queryStr = QString("SELECT malfunctions.malfunction_id, malfunctions.num, malfunctions.dm_code, malfunctions.description, "
|
||||
queryStr = QString("SELECT malfunctions.malfunction_id, malfunctions.num, malfunctions.dm_code, malfunctions.description, malfunctions.go_name, malfunctions.obj_name, "
|
||||
"tasks_fim.task_id "
|
||||
"FROM public.malfunctions JOIN public.tasks_fim ON tasks_fim.task_id = malfunctions.fk_task_fim_id "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 "
|
||||
@@ -677,6 +391,8 @@ QList<TaskAmmFim> DataBaseLMS::selectTasksFIMofTrainee(int id_trainee)
|
||||
malfanction.num = queryMalf.value(1).toString();
|
||||
malfanction.dmCode = queryMalf.value(2).toString();
|
||||
malfanction.description = queryMalf.value(3).toString();
|
||||
malfanction.goName = queryMalf.value(4).toString();
|
||||
malfanction.objName = queryMalf.value(5).toString();
|
||||
|
||||
//Выгребаем сигналы для этой неисправности
|
||||
queryStr = QString("SELECT malf_signs.sign_id, malf_signs.type, malf_signs.description "
|
||||
@@ -771,6 +487,35 @@ QList<TaskAmmFim> DataBaseLMS::selectTasksFIMofTrainee(int id_trainee)
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
//Выгребаем все wh_item отчета
|
||||
|
||||
queryStr = QString("SELECT report_wh_items.wh_item_id, report_wh_items.status, report_wh_items.go_name, report_wh_items.obj_name, report_wh_items.fk_report_id, report_wh_items.number "
|
||||
"FROM public.report_wh_items "
|
||||
"WHERE fk_report_id = %1 "
|
||||
"ORDER BY report_wh_items.number ASC").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryWhItems = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryWhItems))
|
||||
{
|
||||
while (queryWhItems.next())
|
||||
{//report_wh_item
|
||||
FIMReportWarehouseItem reportWhItem;
|
||||
reportWhItem.id = queryWhItems.value(0).toInt();
|
||||
reportWhItem.status = queryWhItems.value(1).toInt();
|
||||
reportWhItem.goName = queryWhItems.value(2).toString();
|
||||
reportWhItem.objName = queryWhItems.value(3).toString();
|
||||
|
||||
task.report.warehouseItemList.append(reportWhItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
}
|
||||
|
||||
listTasks.append(task);
|
||||
@@ -813,7 +558,7 @@ TaskAmmFim DataBaseLMS::selectTaskFIMbyID(int id_task)
|
||||
task.status = query.value(2).toString();
|
||||
|
||||
//Выгребаем все malfunction для этой задачи
|
||||
queryStr = QString("SELECT malfunctions.malfunction_id, malfunctions.num, malfunctions.dm_code, malfunctions.description, "
|
||||
queryStr = QString("SELECT malfunctions.malfunction_id, malfunctions.num, malfunctions.dm_code, malfunctions.description, malfunctions.go_name, malfunctions.obj_name, "
|
||||
"tasks_fim.task_id "
|
||||
"FROM public.malfunctions JOIN public.tasks_fim ON tasks_fim.task_id = malfunctions.fk_task_fim_id "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 "
|
||||
@@ -833,6 +578,8 @@ TaskAmmFim DataBaseLMS::selectTaskFIMbyID(int id_task)
|
||||
malfanction.num = queryMalf.value(1).toString();
|
||||
malfanction.dmCode = queryMalf.value(2).toString();
|
||||
malfanction.description = queryMalf.value(3).toString();
|
||||
malfanction.goName = queryMalf.value(4).toString();
|
||||
malfanction.objName = queryMalf.value(5).toString();
|
||||
|
||||
//Выгребаем сигналы для этой неисправности
|
||||
queryStr = QString("SELECT malf_signs.sign_id, malf_signs.type, malf_signs.description "
|
||||
@@ -927,6 +674,35 @@ TaskAmmFim DataBaseLMS::selectTaskFIMbyID(int id_task)
|
||||
resBool = db->rollback();
|
||||
return TaskAmmFim();
|
||||
}
|
||||
|
||||
//Выгребаем все wh_item отчета
|
||||
|
||||
queryStr = QString("SELECT report_wh_items.wh_item_id, report_wh_items.status, report_wh_items.go_name, report_wh_items.obj_name, report_wh_items.fk_report_id, report_wh_items.number "
|
||||
"FROM public.report_wh_items "
|
||||
"WHERE fk_report_id = %1 "
|
||||
"ORDER BY report_wh_items.number ASC").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryWhItems = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryWhItems))
|
||||
{
|
||||
while (queryWhItems.next())
|
||||
{//report_wh_item
|
||||
FIMReportWarehouseItem reportWhItem;
|
||||
reportWhItem.id = queryWhItems.value(0).toInt();
|
||||
reportWhItem.status = queryWhItems.value(1).toInt();
|
||||
reportWhItem.goName = queryWhItems.value(2).toString();
|
||||
reportWhItem.objName = queryWhItems.value(3).toString();
|
||||
|
||||
task.report.warehouseItemList.append(reportWhItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return TaskAmmFim();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -972,10 +748,11 @@ int DataBaseLMS::updateReportFIMforTask(TaskAmmFim task)
|
||||
|
||||
if(!report_id)
|
||||
{
|
||||
queryStr = QString("INSERT INTO public.reports (fk_task_fim_id) "
|
||||
"VALUES (%1) "
|
||||
queryStr = QString("INSERT INTO public.reports (fk_task_fim_id, mmel) "
|
||||
"VALUES (%1, %2) "
|
||||
"RETURNING reports.report_id").arg(
|
||||
task.getID());
|
||||
task.getID(),
|
||||
task.report.mmel);
|
||||
|
||||
report_id = queryExecInt(queryStr);
|
||||
if(!report_id)
|
||||
@@ -996,6 +773,17 @@ int DataBaseLMS::updateReportFIMforTask(TaskAmmFim task)
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
queryStr = QString("DELETE FROM public.report_wh_items "
|
||||
"WHERE fk_report_id = %1 ").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryWhItemsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryWhItemsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int number = 0;
|
||||
@@ -1019,6 +807,26 @@ int DataBaseLMS::updateReportFIMforTask(TaskAmmFim task)
|
||||
}
|
||||
}
|
||||
|
||||
number = 0;
|
||||
for(FIMReportWarehouseItem reportWhItem : task.report.warehouseItemList)
|
||||
{
|
||||
queryStr = QString("INSERT INTO public.report_wh_items (status, go_name, obj_name, code, fk_report_id, number) "
|
||||
"VALUES ('%1', '%2', '%3', '%4', %5, %6) "
|
||||
"RETURNING report_wh_items.wh_item_id").arg(
|
||||
QString::number(reportWhItem.status),
|
||||
reportWhItem.goName,
|
||||
reportWhItem.objName,
|
||||
reportWhItem.code,
|
||||
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",
|
||||
@@ -384,8 +384,19 @@ int DataBaseLMS::deleteTrainee(int id_trainee)
|
||||
queryStr = QString("DELETE FROM public.report_items "
|
||||
"WHERE report_items.fk_report_id = %1 ").arg(
|
||||
report_id);
|
||||
QSqlQuery queryReportDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryReportDEL))
|
||||
QSqlQuery queryItemsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryItemsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Удаление wh_items для этого отчета*/
|
||||
queryStr = QString("DELETE FROM public.report_wh_items "
|
||||
"WHERE report_wh_items.fk_report_id = %1 ").arg(
|
||||
report_id);
|
||||
QSqlQuery queryWhItemsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryWhItemsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
|
||||
@@ -20,11 +20,13 @@ void TaskAmmFim::addMalfunction(Malfunction malfunction)
|
||||
malfunctionList.append(malfunction);
|
||||
}
|
||||
|
||||
void Malfunction::initialize(QString dmCode, QString num, QString description)
|
||||
void Malfunction::initialize(QString dmCode, QString num, QString description, QString goName, QString objName)
|
||||
{
|
||||
this->dmCode = dmCode;
|
||||
this->num = num;
|
||||
this->description = description;
|
||||
this->goName = goName;
|
||||
this->objName = objName;
|
||||
}
|
||||
|
||||
void Malfunction::addMalfunctionSign(MalfunctionSign sign)
|
||||
|
||||
@@ -84,13 +84,15 @@ public:
|
||||
Malfunction(){};
|
||||
~Malfunction(){};
|
||||
public:
|
||||
void initialize(QString dmCode, QString num, QString description);
|
||||
void initialize(QString dmCode, QString num, QString description, QString goName, QString objName);
|
||||
void addMalfunctionSign(MalfunctionSign sign);
|
||||
public:
|
||||
QString dmCode; // dmCode процедуры
|
||||
QString num; // номер по-порядку в пункте "2. Возможные причины" процедуры
|
||||
QString description; // описание
|
||||
QList<MalfunctionSign> malfunctionSigns;// список соответствующих неисправности признаков
|
||||
QString goName; // имя GameObject (со скриптом DismantleData) - неисправный прибор
|
||||
QString objName;
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT FIMReportItem
|
||||
@@ -104,6 +106,23 @@ public:
|
||||
ProcedureID procedure; // ссылка на процедуру, при необходимости
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT FIMReportWarehouseItem
|
||||
{
|
||||
public:
|
||||
FIMReportWarehouseItem(){};
|
||||
~FIMReportWarehouseItem(){};
|
||||
public:
|
||||
int id = 0; // для идентификации в БД
|
||||
// статус GameObject-а в сцене
|
||||
int status = 0; // 0 - демонтировано, 1 - неисправно, 2 - заменено на новое со склада
|
||||
// имя GameObject-а в сцене
|
||||
QString goName = "";
|
||||
// человеческое название прибора
|
||||
QString objName = "";
|
||||
// его код из документации
|
||||
QString code = "";
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT FIMReport
|
||||
{
|
||||
public:
|
||||
@@ -111,7 +130,9 @@ public:
|
||||
~FIMReport(){};
|
||||
public:
|
||||
int id = 0; // для идентификации в БД
|
||||
QList<FIMReportItem> itemList;
|
||||
QList<FIMReportItem> itemList; // список выполненных/просмотренных процедур
|
||||
QList<FIMReportWarehouseItem> warehouseItemList;
|
||||
bool mmel = false; // выпуск самолета по MMEL
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT TaskAmmFim
|
||||
|
||||
Reference in New Issue
Block a user