#include "JobBean.h" JobBean::JobBean() :m_Id(0) , m_InsertTime(0) , m_Uid("") , m_TaskID("") , m_Name("") , m_RecordID("") , 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); } try { query.getColumnIndex(JOB_FIELD_RECORD_ID.c_str()); } catch (SQLite::Exception&) { sprintf_s(buffer, "ALTER TABLE %s ADD COLUMN %s CHAR(36)", JOB_TABLE_NAME.c_str(), JOB_FIELD_RECORD_ID.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 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_RECORD_ID.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_RECORD_ID = "RecordID"; 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";