GrpcPrint/PrintS/log/Jobbean.cpp

174 lines
5.3 KiB
C++

#include "JobBean.h"
JobBean::JobBean()
:m_Id(0)
, m_InsertTime(0)
, m_Uid("")
, m_TaskID("")
, m_Name("")
, m_StartTime(0)
, m_LastPauseTime(0)
, m_StopTime(0)
, m_DeoxygenSecond(0)
, m_SpendSecond(0)
, m_PrintSecond(0)
, m_StartMoldPos(0.0f)
, m_FirstStartIndex(0)
, m_MoldPos(0.0)
, m_PrintedLayerIndex(0)
, m_IsFinished(false)
, m_IsContinue(false)
, m_IsInvalid(false)
, m_CurrentPrintedTime(0.0)
, m_EveryPrintedTime(0.0)
{
}
JobBean::~JobBean()
{
}
void JobBean::CreateIfNoExist(SQLite::Database* db)
{
if (db == nullptr)return;
char buffer[1024];
if (db->tableExists(JOB_TABLE_NAME)) {
sprintf_s(buffer, sizeof(buffer), "SELECT * FROM %s LIMIT 0", JOB_TABLE_NAME.c_str());
SQLite::Statement query(*db, buffer);
try {
query.getColumnIndex(JOB_FIELD_START_MOLD_POS.c_str());
}
catch (SQLite::Exception&) {
sprintf_s(buffer, sizeof(buffer), "AlTER TABLE %s ADD COLUMN %s FLOAT;UPDATE %s SET %s=%f;",
JOB_TABLE_NAME.c_str(), JOB_FIELD_START_MOLD_POS.c_str(),
JOB_TABLE_NAME.c_str(), JOB_FIELD_START_MOLD_POS.c_str(), 0.0f);
db->exec(buffer);
}
try {
query.getColumnIndex(JOB_FIELD_FIRST_START_INDEX.c_str());
}
catch (SQLite::Exception&) {
sprintf_s(buffer, sizeof(buffer), "AlTER TABLE %s ADD COLUMN %s INTEGER;UPDATE %s SET %s=0;",
JOB_TABLE_NAME.c_str(), JOB_FIELD_FIRST_START_INDEX.c_str(),
JOB_TABLE_NAME.c_str(), JOB_FIELD_FIRST_START_INDEX.c_str());
db->exec(buffer);
}
try {
query.getColumnIndex(JOB_FIELD_LAST_PAUSE_TIME.c_str());
}
catch (SQLite::Exception&) {
sprintf_s(buffer, "ALTER TABLE %s ADD COLUMN %s INTEGER", JOB_TABLE_NAME.c_str(), JOB_FIELD_LAST_PAUSE_TIME.c_str());
db->exec(buffer);
sprintf_s(buffer, "UPDATE %s SET %s=0", JOB_TABLE_NAME.c_str(), JOB_FIELD_LAST_PAUSE_TIME.c_str());
db->exec(buffer);
}
try {
query.getColumnIndex(JOB_TASK_ID.c_str());
}
catch (SQLite::Exception&) {
sprintf_s(buffer, "ALTER TABLE %s ADD COLUMN %s CHAR(36)", JOB_TABLE_NAME.c_str(), JOB_TASK_ID.c_str());
db->exec(buffer);
}
try {
query.getColumnIndex(JOB_FIELD_PRINT_SECOND.c_str());
}
catch (SQLite::Exception&) {
sprintf_s(buffer, "ALTER TABLE %s ADD COLUMN %s INTEGER", JOB_TABLE_NAME.c_str(), JOB_FIELD_PRINT_SECOND.c_str());
db->exec(buffer);
sprintf_s(buffer, "UPDATE %s SET %s=%s", JOB_TABLE_NAME.c_str(), JOB_FIELD_PRINT_SECOND.c_str(), JOB_FIELD_SPEND_SECOND.c_str());
db->exec(buffer);
}
return;
}
string createsql = "CREATE TABLE IF NOT EXISTS %s(%s INTEGER PRIMARY KEY,\
%s LONG,%s CHAR(36),%s CHAR(36),%s VARCHAR(100),%s LONG,%s LONG,%s LONG,\
%s INTEGER,%s INTEGER,%s INTEGER,%s INTEGER,%s FLOAT,%s DOUBLE,%s INTEGER,%s INTEGER,%s INTEGER,%s INTEGER)";
sprintf_s(buffer, sizeof(buffer), createsql.c_str(),
JOB_TABLE_NAME.c_str(),
JOB_FIELD_ID.c_str(),
JOB_FIELD_INSERT_TIME.c_str(),
JOB_TASK_ID.c_str(),
JOB_FIELD_UID.c_str(),
JOB_FIELD_NAME.c_str(),
JOB_FIELD_START_TIME.c_str(),
JOB_FIELD_LAST_PAUSE_TIME.c_str(),
JOB_FIELD_STOP_TIME.c_str(),
JOB_FIELD_DEOXYGEN_SECOND.c_str(),
JOB_FIELD_SPEND_SECOND.c_str(),
JOB_FIELD_PRINT_SECOND.c_str(),
JOB_FIELD_FIRST_START_INDEX.c_str(),
JOB_FIELD_START_MOLD_POS.c_str(),
JOB_FIELD_MOLD_POS.c_str(),
JOB_FIELD_PRINTED_LAYER_INDEX.c_str(),
JOB_FIELD_IS_FINISH.c_str(),
JOB_FIELD_IS_CONTINUE.c_str(),
JOB_FIELD_IS_INVALID.c_str()
);
db->exec(buffer);
sprintf_s(buffer, sizeof(buffer), "CREATE INDEX IF NOT EXISTS idx_%s_%s ON %s (%s)",
JOB_TABLE_NAME.c_str(),
JOB_FIELD_START_TIME.c_str(),
JOB_TABLE_NAME.c_str(),
JOB_FIELD_START_TIME.c_str()
);
db->exec(buffer);
sprintf_s(buffer, sizeof(buffer), "CREATE INDEX IF NOT EXISTS idx_%s%s_%s ON %s (%s,%s)",
JOB_TABLE_NAME.c_str(),
JOB_FIELD_INSERT_TIME.c_str(),
JOB_FIELD_UID.c_str(),
JOB_TABLE_NAME.c_str(),
JOB_FIELD_INSERT_TIME.c_str(),
JOB_FIELD_UID.c_str()
);
db->exec(buffer);
sprintf_s(buffer, sizeof(buffer), "CREATE INDEX IF NOT EXISTS idx_%s_%s ON %s (%s)",
JOB_TABLE_NAME.c_str(),
JOB_TASK_ID.c_str(),
JOB_TABLE_NAME.c_str(),
JOB_TASK_ID.c_str()
);
db->exec(buffer);
}
JobStatistics::JobStatistics()
:m_MinValue(0)
, m_MaxValue(0)
, m_MinIndex(0)
, m_MaxIndex(0)
{
}
JobStatistics::~JobStatistics()
{
}
const string JobBean::JOB_TABLE_NAME = "Job";
const string JobBean::JOB_FIELD_ID = "id";
const string JobBean::JOB_FIELD_INSERT_TIME = "insert_time";
const string JobBean::JOB_TASK_ID = "task_id";
const string JobBean::JOB_FIELD_UID = "uid";
const string JobBean::JOB_FIELD_NAME = "name";
const string JobBean::JOB_FIELD_START_TIME = "start_time";
const string JobBean::JOB_FIELD_LAST_PAUSE_TIME = "last_pause_time";
const string JobBean::JOB_FIELD_STOP_TIME = "stop_time";
const string JobBean::JOB_FIELD_DEOXYGEN_SECOND = "deoxygen_second";
const string JobBean::JOB_FIELD_SPEND_SECOND = "spend_second";
const string JobBean::JOB_FIELD_PRINT_SECOND = "print_second";
const string JobBean::JOB_FIELD_FIRST_START_INDEX = "first_start_index";
const string JobBean::JOB_FIELD_START_MOLD_POS = "start_mold_pos";
const string JobBean::JOB_FIELD_MOLD_POS = "mold_pos";
const string JobBean::JOB_FIELD_PRINTED_LAYER_INDEX = "printed_layer_index";
const string JobBean::JOB_FIELD_IS_FINISH = "is_finish";
const string JobBean::JOB_FIELD_IS_CONTINUE = "is_continue";
const string JobBean::JOB_FIELD_IS_INVALID = "is_invalid";