This commit is contained in:
2025-07-30 17:06:57 +03:00
parent 726abda4c0
commit 0c696e03d9
4 changed files with 118 additions and 76 deletions

View File

@@ -1707,9 +1707,9 @@ int DataBaseLMS::updateTimingTrainee(int id_trainee, TimingOfTrainee timing)
"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(),
timing.getEntryTimeS(),
timing.getExitTimeS(),
timing.getOperatingTimeS(),
QString::number(id_trainee),
QString::number(timing.getID()) );
@@ -1718,7 +1718,7 @@ int DataBaseLMS::updateTimingTrainee(int id_trainee, TimingOfTrainee timing)
TimingOfTrainee DataBaseLMS::selectTimingTrainee(int id_trainee)
{
TimingOfTrainee timing;
TimingOfTrainee timing(id_trainee);
QString queryStr;
@@ -1733,9 +1733,9 @@ TimingOfTrainee DataBaseLMS::selectTimingTrainee(int id_trainee)
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.setEntryTime(querySel.value(1).toDateTime());
timing.setExitTime(querySel.value(2).toDateTime());
timing.setOperatingTimeS(querySel.value(3).toTime().toString());
timing.setTraineeID(querySel.value(4).toInt());
}
}

View File

@@ -222,80 +222,34 @@ bool InterfaceDataBaseLMS::deAuthorizationAllTrainees()
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 = "";
TimingOfTrainee timing(id_trainee);
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
if(!timing.getID())
{//Еще нет записи
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);
timing.fixEntry();
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 = "";
TimingOfTrainee timing(id_trainee);
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
if(!timing.getID())
{//Еще нет записи
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);
timing.fixExit();
return updateTimingTrainee(id_trainee, timing);
}

View File

@@ -1,6 +1,70 @@
#include "timingoftrainee.h"
TimingOfTrainee::TimingOfTrainee()
TimingOfTrainee::TimingOfTrainee(int trainee_id):
timing_id(0),
trainee_id(trainee_id)
{
QDateTime dataTimeCurr = QDateTime::currentDateTime();
setOperatingTime(0);
setEntryTime(dataTimeCurr);
setExitTime(dataTimeCurr);
}
void TimingOfTrainee::setEntryTimeS(QString entry_time)
{
str_entryTime = entry_time;
entryTime = QDateTime::fromString(entry_time);
}
void TimingOfTrainee::setEntryTime(QDateTime entry_time)
{
entryTime = entry_time;
str_entryTime = entry_time.toString("yyyy-MM-dd hh:mm:ss.zzz");
}
void TimingOfTrainee::setExitTimeS(QString exit_time)
{
str_exitTime = exit_time;
exitTime = QDateTime::fromString(exit_time);
}
void TimingOfTrainee::setExitTime(QDateTime exit_time)
{
exitTime = exit_time;
str_exitTime = exit_time.toString("yyyy-MM-dd hh:mm:ss.zzz");
}
void TimingOfTrainee::setOperatingTimeS(QString operating_time)
{
str_operatingTime = operating_time;
QTime timeLoc = QTime::fromString(operating_time);
operatingTime = timeLoc.hour() * 3600 + timeLoc.minute() * 60 + timeLoc.second();
}
void TimingOfTrainee::setOperatingTime(int operating_time)
{
operatingTime = operating_time;
str_operatingTime = QTime::fromString("00:00:00").addSecs(operating_time).toString();
}
void TimingOfTrainee::fixEntry()
{
QDateTime dataTimeCurr = QDateTime::currentDateTime();
setEntryTime(dataTimeCurr);
}
void TimingOfTrainee::fixExit()
{
QDateTime dataTimeCurr = QDateTime::currentDateTime();
setExitTime(dataTimeCurr);
calculateOperatingTime();
}
void TimingOfTrainee::calculateOperatingTime()
{
int cntSec = entryTime.secsTo(exitTime);
setOperatingTime(getOperatingTime() + cntSec);
}

View File

@@ -2,33 +2,57 @@
#define TIMINGOFTRAINEE_H
#include <QString>
#include <QDateTime>
class TimingOfTrainee
{
public:
TimingOfTrainee();
TimingOfTrainee(int trainee_id);
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;}
void setEntryTimeS(QString entry_time);
void setEntryTime(QDateTime entry_time);
QString getEntryTimeS(){return str_entryTime;}
QDateTime getEntryTime(){return entryTime;}
void setExitTimeS(QString exit_time);
void setExitTime(QDateTime exit_time);
QString getExitTimeS(){return str_exitTime;}
QDateTime getExitTime(){return exitTime;}
void setOperatingTimeS(QString operating_time);
void setOperatingTime(int operating_time);
QString getOperatingTimeS(){return str_operatingTime;}
int getOperatingTime(){return operatingTime;}
void fixEntry();
void fixExit();
private:
int timing_id = 0;
QString entry_time = "";
QString exit_time = "";
QString operating_time = "";
int trainee_id = 0;
void calculateOperatingTime();
private:
int timing_id;
int trainee_id;
QString str_entryTime; //"yyyy-MM-dd hh:mm:ss.zzz"
QString str_exitTime; //"yyyy-MM-dd hh:mm:ss.zzz"
QString str_operatingTime; //"hh:mm:ss"
QDateTime entryTime;
QDateTime exitTime;
int operatingTime; //в секундах
};
#endif // TIMINGOFTRAINEE_H