Тайминг. Работает. Предварительно.

This commit is contained in:
2025-07-30 12:34:34 +03:00
parent 5c80f6824a
commit 726abda4c0
19 changed files with 292 additions and 9 deletions

View File

@@ -25,6 +25,8 @@ add_library(DataBaseLMS SHARED
tasksAmmFim.cpp
tasksAmmFim.h
typeQueryToDB.h
timingoftrainee.cpp
timingoftrainee.h
)
target_link_libraries(DataBaseLMS PRIVATE Qt5::Widgets)

View File

@@ -1691,6 +1691,58 @@ int DataBaseLMS::updateTrainee(Trainee trainee)
return queryExecInt(queryStr);
}
int DataBaseLMS::insertTimingTrainee(int id_trainee)
{
QString queryStr = QString("INSERT INTO public.timings (entry_time, exit_time, operating_time, timing_trainee) "
"VALUES (DEFAULT, DEFAULT, DEFAULT, %1) "
"RETURNING timings.timing_id").arg(
QString::number(id_trainee));
return queryExecInt(queryStr);
}
int DataBaseLMS::updateTimingTrainee(int id_trainee, TimingOfTrainee timing)
{
QString queryStr = QString("UPDATE public.timings "
"SET entry_time = '%1', exit_time = '%2', operating_time = '%3', timing_trainee = %4 "
"WHERE timing_id = %5 "
"RETURNING timings.timing_id").arg(
timing.getEntryTime(),
timing.getExitTime(),
timing.getOperatingTime(),
QString::number(id_trainee),
QString::number(timing.getID()) );
return queryExecInt(queryStr);
}
TimingOfTrainee DataBaseLMS::selectTimingTrainee(int id_trainee)
{
TimingOfTrainee timing;
QString queryStr;
queryStr = QString("SELECT timings.timing_id, timings.entry_time, timings.exit_time, timings.operating_time, timings.timing_trainee "
"FROM public.timings "
"WHERE timing_trainee = '%1'").arg(id_trainee);
QSqlQuery querySel = QSqlQuery(*db);
if(queryExec(queryStr, &querySel))
{
if (querySel.first())
{//Тайминг
timing.setID(querySel.value(0).toInt());
timing.setEntryTime(querySel.value(1).toDateTime().toString());
timing.setExitTime(querySel.value(2).toDateTime().toString());
timing.setOperatingTime(querySel.value(3).toTime().toString());
timing.setTraineeID(querySel.value(4).toInt());
}
}
return timing;
}
int DataBaseLMS::queryExecInt(QString queryStr)
{
QSqlQuery query = QSqlQuery(*db);

View File

@@ -8,6 +8,7 @@
#include "trainee.h"
#include "group.h"
#include "tasksAmmFim.h"
#include "timingoftrainee.h"
class DataBaseSettings
{
@@ -101,6 +102,11 @@ protected:
int deleteTrainee(int id_trainee);
int updateTrainee(Trainee trainee);
//Тайминг
int insertTimingTrainee(int id_trainee);
int updateTimingTrainee(int id_trainee, TimingOfTrainee timing);
TimingOfTrainee selectTimingTrainee(int id_trainee);
private:
DataBaseSettings getDataBaseSettings();
int queryExecInt(QString queryStr);

View File

@@ -1,6 +1,8 @@
#include <QMessageBox>
#include <QCoreApplication>
#include <QSqlError>
#include <QDateTime>
#include <QTime>
#include "interfacedatabaselms.h"
InterfaceDataBaseLMS::InterfaceDataBaseLMS(QWidget* parent):
@@ -218,6 +220,86 @@ bool InterfaceDataBaseLMS::deAuthorizationAllTrainees()
return updateAllTraineesLoggedIn(false);
}
int InterfaceDataBaseLMS::entryTraineeOnSimulator(int id_trainee)
{
TimingOfTrainee timing;
QDateTime dataTime_entry = QDateTime::currentDateTime();
QDateTime dataTime_exit;
int interval;
QString dataTimeStr_entry = dataTime_entry.toString("yyyy-MM-dd hh:mm:ss.zzz");
QString dataTimeStr_exit = "";
QString intervalStr = "";
timing = selectTimingTrainee(id_trainee);
if(timing.getID())
{//Запись уже есть в базе
dataTime_exit = QDateTime::fromString(timing.getExitTime());
dataTimeStr_exit = dataTime_exit.toString("yyyy-MM-dd hh:mm:ss.zzz");
intervalStr = timing.getOperatingTime();
}
else
{//Еще нет записи
int timing_id = insertTimingTrainee(id_trainee);
timing.setID(timing_id);
dataTime_exit = dataTime_entry;
interval = dataTime_entry.secsTo(dataTime_exit);
dataTimeStr_exit = dataTime_exit.toString("yyyy-MM-dd hh:mm:ss.zzz");
intervalStr = QString::number(interval);
}
timing.setTraineeID(id_trainee);
timing.setEntryTime(dataTimeStr_entry);
timing.setExitTime(dataTimeStr_exit);
timing.setOperatingTime(intervalStr);
return updateTimingTrainee(id_trainee, timing);
}
int InterfaceDataBaseLMS::exitTraineeFromSimulator(int id_trainee)
{
TimingOfTrainee timing;
QDateTime dataTime_entry;
QDateTime dataTime_exit = QDateTime::currentDateTime();
int interval;
QString dataTimeStr_entry = "";
QString dataTimeStr_exit = dataTime_exit.toString("yyyy-MM-dd hh:mm:ss.zzz");
QString intervalStr = "";
timing = selectTimingTrainee(id_trainee);
if(timing.getID())
{//Запись уже есть в базе
dataTime_entry = QDateTime::fromString(timing.getEntryTime());
dataTimeStr_entry = dataTime_entry.toString("yyyy-MM-dd hh:mm:ss.zzz");
interval = QTime::fromString(timing.getOperatingTime()).second() + dataTime_entry.secsTo(dataTime_exit);
//interval = dataTime_entry.secsTo(dataTime_exit);
intervalStr = QString::number(interval);
}
else
{//Еще нет записи
int timing_id = insertTimingTrainee(id_trainee);
timing.setID(timing_id);
dataTime_entry = dataTime_exit;
interval = dataTime_entry.secsTo(dataTime_exit);
dataTimeStr_entry = dataTime_entry.toString("yyyy-MM-dd hh:mm:ss.zzz");
intervalStr = QString::number(interval);
}
timing.setTraineeID(id_trainee);
timing.setEntryTime(dataTimeStr_entry);
timing.setExitTime(dataTimeStr_exit);
timing.setOperatingTime(intervalStr);
return updateTimingTrainee(id_trainee, timing);
}
QString InterfaceDataBaseLMS::getNameTraineeOnComputer(QString computer_name)
{
return selectTraineeNameOnComputer(computer_name);

View File

@@ -51,6 +51,11 @@ public:
bool deAuthorizationTrainee(QString login);
bool deAuthorizationAllTrainees();
//Регистрация тайминга Обучаемого
int entryTraineeOnSimulator(int id_trainee);
int exitTraineeFromSimulator(int id_trainee);
//void setTasks(QString login, QStringList tasks);
QString getNameTraineeOnComputer(QString computer_name);

View File

@@ -0,0 +1,6 @@
#include "timingoftrainee.h"
TimingOfTrainee::TimingOfTrainee()
{
}

View File

@@ -0,0 +1,34 @@
#ifndef TIMINGOFTRAINEE_H
#define TIMINGOFTRAINEE_H
#include <QString>
class TimingOfTrainee
{
public:
TimingOfTrainee();
void setID(int timing_id){this->timing_id = timing_id;}
int getID(){return timing_id;}
void setEntryTime(QString entry_time){this->entry_time = entry_time;}
QString getEntryTime(){return entry_time;}
void setExitTime(QString exit_time){this->exit_time = exit_time;}
QString getExitTime(){return exit_time;}
void setOperatingTime(QString operating_time){this->operating_time = operating_time;}
QString getOperatingTime(){return operating_time;}
void setTraineeID(int trainee_id){this->trainee_id = trainee_id;}
int getTraineeID(){return trainee_id;}
private:
int timing_id = 0;
QString entry_time = "";
QString exit_time = "";
QString operating_time = "";
int trainee_id = 0;
};
#endif // TIMINGOFTRAINEE_H