diff --git a/app/HGProductionTool/dialog_userinput.cpp b/app/HGProductionTool/dialog_userinput.cpp index a83e524..8fcdbf3 100644 --- a/app/HGProductionTool/dialog_userinput.cpp +++ b/app/HGProductionTool/dialog_userinput.cpp @@ -7,8 +7,7 @@ Dialog_UserInput::Dialog_UserInput(ui_helper::value_type type, const QString &ti QDialog(parent), ui(new Ui::Dialog_UserInput), m_type(type), - m_title(title), - m_desc(desc) + m_title(title) { ui->setupUi(this); @@ -18,23 +17,25 @@ Dialog_UserInput::Dialog_UserInput(ui_helper::value_type type, const QString &ti ui->comboBox->setVisible(false); if (type == ui_helper::VAL_TYPE_BOOL) { - ui->label->setText(QString::fromStdWString(m_desc)); + ui->label->setText(QString::fromStdWString(desc)); ui->radioButton_yes->setVisible(true); ui->radioButton_no->setVisible(true); } else if (type == ui_helper::VAL_TYPE_INT || type == ui_helper::VAL_TYPE_FLOAT || type == ui_helper::VAL_TYPE_STRING) { - ui->label->setText(QString::fromStdWString(m_desc)); + ui->label->setText(QString::fromStdWString(desc)); ui->lineEdit->setVisible(true); } - else if (type == ui_helper::VAL_TYPE_RANGE) + else if (type == ui_helper::VAL_TYPE_TIPS_VAL) { - while(*m_desc != '\0') + ui_helper::PINFOTIPS p = (ui_helper::PINFOTIPS)desc; + while(*(p->desc) != '\0') { - ui->comboBox->addItem(QString::number(*m_desc)); - m_desc++; + ui->comboBox->addItem(QString::number(*(p->desc))); + p->desc++; } + ui->label->setText(QString::fromStdWString(p->info)); ui->comboBox->setVisible(true); } @@ -75,7 +76,7 @@ parameter *Dialog_UserInput::getParam() { param->m_sData = ui->lineEdit->text().toStdWString(); } - else if (m_type == ui_helper::VAL_TYPE_RANGE) + else if (m_type == ui_helper::VAL_TYPE_TIPS_VAL) { param->m_iData = ui->comboBox->currentText().toInt(); } @@ -115,7 +116,7 @@ size_t UserInputParams::get_size() { if (m_type == ui_helper::VAL_TYPE_BOOL) return sizeof(bool); - if (m_type == ui_helper::VAL_TYPE_INT || m_type == ui_helper::VAL_TYPE_RANGE) + if (m_type == ui_helper::VAL_TYPE_INT || m_type == ui_helper::VAL_TYPE_TIPS_VAL) return sizeof(int); if (m_type == ui_helper::VAL_TYPE_FLOAT) return sizeof(double); @@ -128,7 +129,7 @@ void *UserInputParams::get_data() { if (m_type == ui_helper::VAL_TYPE_BOOL) return &m_bData; - if (m_type == ui_helper::VAL_TYPE_INT || m_type == ui_helper::VAL_TYPE_RANGE) + if (m_type == ui_helper::VAL_TYPE_INT || m_type == ui_helper::VAL_TYPE_TIPS_VAL) return &m_iData; if (m_type == ui_helper::VAL_TYPE_FLOAT) return &m_fData; diff --git a/app/HGProductionTool/dialog_userinput.h b/app/HGProductionTool/dialog_userinput.h index 52a156f..65609c0 100644 --- a/app/HGProductionTool/dialog_userinput.h +++ b/app/HGProductionTool/dialog_userinput.h @@ -45,7 +45,6 @@ private: ui_helper::value_type m_type; QString m_title; - const wchar_t *m_desc; }; #endif // DIALOG_USERINPUT_H diff --git a/app/HGProductionTool/ui_helper.h b/app/HGProductionTool/ui_helper.h index cd4fc3d..d2862e0 100644 --- a/app/HGProductionTool/ui_helper.h +++ b/app/HGProductionTool/ui_helper.h @@ -68,15 +68,14 @@ public: VAL_TYPE_BOOL = 0, VAL_TYPE_INT, VAL_TYPE_FLOAT, - VAL_TYPE_STRING, - VAL_TYPE_RANGE, + VAL_TYPE_STRING, VAL_TYPE_CUSTOM, // custom data, such as gamma table ... VAL_TYPE_TIPS_VAL, // status info tips and data info }; typedef struct _info// value_type == VAL_TUPE_TIPS { - const wchar_t* desc; // desc is int + const wchar_t* desc; //data const wchar_t* info; //info tips }_INFOTIPS, * PINFOTIPS; // get testing parameter ... diff --git a/db/HGPdtToolDb/HGPdtToolDbImpl.cpp b/db/HGPdtToolDb/HGPdtToolDbImpl.cpp index 0785dbf..50fede0 100644 --- a/db/HGPdtToolDb/HGPdtToolDbImpl.cpp +++ b/db/HGPdtToolDb/HGPdtToolDbImpl.cpp @@ -5,7 +5,7 @@ #include "base/HGUtility.h" #include "HGString.h" -const HGChar* INITTIAL_INSPECTION[] = +const HGChar* INITIAL_INSPECTION[] = { "dial_switch", "rocker_switch", @@ -113,10 +113,9 @@ HGResult HGPdtToolDbUserMgrImpl::Create(const HGChar* host, HGUShort port, const } if (0 != CreateFileTable(sql) || 0 != CreateMainTestTable(sql) - || 0 != CreateInitInspTestTable(sql) || 0 != CreateInitInspDescTable(sql) - || 0 != CreateImgInspTestTable(sql) || 0 != CreateImgInspDescTable(sql) - || 0 != CreatePreInspTestTable(sql) || 0 != CreatePreInspDescTable(sql) - || 0 != CreateInspImageTable(sql)) + || 0 != CreateInitInspTestTable(sql) || 0 != CreateInitInspDescTable(sql) || 0 != CreateInitInspImageTable(sql) + || 0 != CreateImgInspTestTable(sql) || 0 != CreateImgInspDescTable(sql) || 0 != CreateImgInspImageTable(sql) + || 0 != CreatePreInspTestTable(sql) || 0 != CreatePreInspDescTable(sql) || 0 != CreatePreInspImageTable(sql)) { mysql_close(sql); return HGBASE_ERR_FAIL; @@ -679,12 +678,12 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) cmd += ", main_test.device_type"; cmd += ", main_test.device_version"; - for (int i = 0; i < sizeof(INITTIAL_INSPECTION) / sizeof(const HGChar*); ++i) + for (int i = 0; i < sizeof(INITIAL_INSPECTION) / sizeof(const HGChar*); ++i) { cmd += ", initial_inspection_test."; - cmd += INITTIAL_INSPECTION[i]; + cmd += INITIAL_INSPECTION[i]; cmd += ", initial_inspection_desc."; - cmd += INITTIAL_INSPECTION[i]; + cmd += INITIAL_INSPECTION[i]; } for (int i = 0; i < sizeof(IMAGE_INSPECTION) / sizeof(const HGChar*); ++i) { @@ -916,10 +915,16 @@ HGResult HGPdtToolDbUserMgrImpl::OpenDevice(const HGChar* sn, class HGPdtToolDbD return HGBASE_ERR_FAIL; } - if (0 != InitMainTestItem(sn) || 0 != InitInspTestItem("initial_inspection_test", sn) - || 0 != InitInspTestItem("initial_inspection_desc", sn) || 0 != InitInspTestItem("image_inspection_test", sn) - || 0 != InitInspTestItem("image_inspection_desc", sn) || 0 != InitInspTestItem("pressure_inspection_test", sn) - || 0 != InitInspTestItem("pressure_inspection_desc", sn) || 0 != InitInspTestItem("inspection_image", sn)) + if (0 != InitMainTestItem(sn) + || 0 != InitInspTestItem("initial_inspection_test", sn) + || 0 != InitInspTestItem("initial_inspection_desc", sn) + || 0 != InitInspTestItem("initial_inspection_image", sn) + || 0 != InitInspTestItem("image_inspection_test", sn) + || 0 != InitInspTestItem("image_inspection_desc", sn) + || 0 != InitInspTestItem("image_inspection_image", sn) + || 0 != InitInspTestItem("pressure_inspection_test", sn) + || 0 != InitInspTestItem("pressure_inspection_desc", sn) + || 0 != InitInspTestItem("pressure_inspection_image", sn)) { mysql_query(m_sql, "rollback;"); return HGBASE_ERR_FAIL; @@ -1095,11 +1100,11 @@ int HGPdtToolDbUserMgrImpl::CreateInitInspTestTable(MYSQL* sql) assert(NULL != sql); std::string cmd = "create table if not exists initial_inspection_test (sn varchar(20) not null primary key"; - int size = sizeof(INITTIAL_INSPECTION) / sizeof(const HGChar*); + int size = sizeof(INITIAL_INSPECTION) / sizeof(const HGChar*); for (int i = 0; i < size; ++i) { cmd += ", "; - cmd += INITTIAL_INSPECTION[i]; + cmd += INITIAL_INSPECTION[i]; cmd += " tinyint unsigned default 0"; } cmd += ");"; @@ -1111,11 +1116,27 @@ int HGPdtToolDbUserMgrImpl::CreateInitInspDescTable(MYSQL* sql) assert(NULL != sql); std::string cmd = "create table if not exists initial_inspection_desc (sn varchar(20) not null primary key"; - int size = sizeof(INITTIAL_INSPECTION) / sizeof(const HGChar*); + int size = sizeof(INITIAL_INSPECTION) / sizeof(const HGChar*); for (int i = 0; i < size; ++i) { cmd += ", "; - cmd += INITTIAL_INSPECTION[i]; + cmd += INITIAL_INSPECTION[i]; + cmd += " text"; + } + cmd += ");"; + return mysql_query(sql, cmd.c_str()); +} + +int HGPdtToolDbUserMgrImpl::CreateInitInspImageTable(MYSQL* sql) +{ + assert(NULL != sql); + + std::string cmd = "create table if not exists initial_inspection_image (sn varchar(20) not null primary key"; + int size = sizeof(INITIAL_INSPECTION) / sizeof(const HGChar*); + for (int i = 0; i < size; ++i) + { + cmd += ", "; + cmd += INITIAL_INSPECTION[i]; cmd += " text"; } cmd += ");"; @@ -1154,6 +1175,22 @@ int HGPdtToolDbUserMgrImpl::CreateImgInspDescTable(MYSQL* sql) return mysql_query(sql, cmd.c_str()); } +int HGPdtToolDbUserMgrImpl::CreateImgInspImageTable(MYSQL* sql) +{ + assert(NULL != sql); + + std::string cmd = "create table if not exists image_inspection_image (sn varchar(20) not null primary key"; + int size = sizeof(IMAGE_INSPECTION) / sizeof(const HGChar*); + for (int i = 0; i < size; ++i) + { + cmd += ", "; + cmd += IMAGE_INSPECTION[i]; + cmd += " text"; + } + cmd += ");"; + return mysql_query(sql, cmd.c_str()); +} + int HGPdtToolDbUserMgrImpl::CreatePreInspTestTable(MYSQL* sql) { assert(NULL != sql); @@ -1186,16 +1223,16 @@ int HGPdtToolDbUserMgrImpl::CreatePreInspDescTable(MYSQL* sql) return mysql_query(sql, cmd.c_str()); } -int HGPdtToolDbUserMgrImpl::CreateInspImageTable(MYSQL* sql) +int HGPdtToolDbUserMgrImpl::CreatePreInspImageTable(MYSQL* sql) { assert(NULL != sql); - std::string cmd = "create table if not exists inspection_image (sn varchar(20) not null primary key"; - int size = sizeof(IMAGE_INSPECTION) / sizeof(const HGChar*); + std::string cmd = "create table if not exists pressure_inspection_image (sn varchar(20) not null primary key"; + int size = sizeof(PRESSURE_INSPECTION) / sizeof(const HGChar*); for (int i = 0; i < size; ++i) { cmd += ", "; - cmd += IMAGE_INSPECTION[i]; + cmd += PRESSURE_INSPECTION[i]; cmd += " text"; } cmd += ");"; @@ -1542,16 +1579,15 @@ HGResult HGPdtToolDbDeviceImpl::DownloadEntryImage(HGUInt entryName, const HGCha return HGBASE_ERR_INVALIDARG; } - const HGChar* entryNameStr = NULL; - if (entryName >= HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE && entryName <= HGPDTTOOLDB_ENTRYNAME_MECH_PAPER_FEEDING_INCLINATION) - entryNameStr = IMAGE_INSPECTION[entryName - HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE]; - if (NULL == entryNameStr) + const HGChar* entryNameStr = GetEntryNameStr(entryName); + const HGChar* tableName = GetImageTableName(entryName); + if (NULL == entryNameStr || NULL == tableName) { return HGBASE_ERR_INVALIDARG; } std::string remotePath; - HGResult res = GetEntryImageRemotePath(entryNameStr, remotePath); + HGResult res = GetEntryImageRemotePath(tableName, entryNameStr, remotePath); if (HGBASE_ERR_OK != res) { return res; @@ -1572,16 +1608,15 @@ HGResult HGPdtToolDbDeviceImpl::CheckEntryImage(HGUInt entryName) return HGBASE_ERR_FAIL; } - const HGChar* entryNameStr = NULL; - if (entryName >= HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE && entryName <= HGPDTTOOLDB_ENTRYNAME_MECH_PAPER_FEEDING_INCLINATION) - entryNameStr = IMAGE_INSPECTION[entryName - HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE]; - if (NULL == entryNameStr) + const HGChar* entryNameStr = GetEntryNameStr(entryName); + const HGChar* tableName = GetImageTableName(entryName); + if (NULL == entryNameStr || NULL == tableName) { return HGBASE_ERR_INVALIDARG; } std::string remotePath; - HGResult res = GetEntryImageRemotePath(entryNameStr, remotePath); + HGResult res = GetEntryImageRemotePath(tableName, entryNameStr, remotePath); if (HGBASE_ERR_OK != res) { return res; @@ -1607,16 +1642,15 @@ HGResult HGPdtToolDbDeviceImpl::UploadEntryImage(HGUInt entryName, const HGChar* return HGBASE_ERR_INVALIDARG; } - const HGChar* entryNameStr = NULL; - if (entryName >= HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE && entryName <= HGPDTTOOLDB_ENTRYNAME_MECH_PAPER_FEEDING_INCLINATION) - entryNameStr = IMAGE_INSPECTION[entryName - HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE]; - if (NULL == entryNameStr) + const HGChar* entryNameStr = GetEntryNameStr(entryName); + const HGChar* tableName = GetImageTableName(entryName); + if (NULL == entryNameStr || NULL == tableName) { return HGBASE_ERR_INVALIDARG; } std::string remotePath; - HGResult res = GetEntryImageRemotePath(entryNameStr, remotePath); + HGResult res = GetEntryImageRemotePath(tableName, entryNameStr, remotePath); if (HGBASE_ERR_OK != res) { return res; @@ -1624,9 +1658,7 @@ HGResult HGPdtToolDbDeviceImpl::UploadEntryImage(HGUInt entryName, const HGChar* if (remotePath.empty()) { - HGChar uuid[256]; - HGBase_GetUuid(uuid, 256); - remotePath = std::string("/upload/") + uuid; + remotePath = std::string("/upload/") + m_sn + "/" + entryNameStr + ".jpg"; } res = UploadFile(ftpHost, ftpPort, fileName, remotePath.c_str()); @@ -1644,7 +1676,7 @@ HGResult HGPdtToolDbDeviceImpl::UploadEntryImage(HGUInt entryName, const HGChar* return HGBASE_ERR_FAIL; } - sprintf(sqlCmd, "update inspection_image set %s = '%s' where sn = '%s';", + sprintf(sqlCmd, "update %s set %s = '%s' where sn = '%s';", tableName, entryNameStr, remotePath.c_str(), m_sn.c_str()); ret = mysql_query(m_userMgr->m_sql, sqlCmd); if (0 != ret) @@ -1745,7 +1777,7 @@ HGResult HGPdtToolDbDeviceImpl::SetProperty(const HGChar* prop, const HGChar* st const HGChar* HGPdtToolDbDeviceImpl::GetEntryNameStr(HGUInt entryName) { if (entryName >= HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH && entryName <= HGPDTTOOLDB_ENTRYNAME_SCANNING_SENSOR) - return INITTIAL_INSPECTION[entryName - HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH]; + return INITIAL_INSPECTION[entryName - HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH]; else if (entryName >= HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE && entryName <= HGPDTTOOLDB_ENTRYNAME_MECH_PAPER_FEEDING_INCLINATION) return IMAGE_INSPECTION[entryName - HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE]; else if (entryName >= HGPDTTOOLDB_ENTRYNAME_SINGLE_PAGE_TEST_1 && entryName <= HGPDTTOOLDB_ENTRYNAME_CLEAR_ROLLER_COUNT) @@ -1775,14 +1807,26 @@ const HGChar* HGPdtToolDbDeviceImpl::GetDescTableName(HGUInt entryName) return NULL; } -HGResult HGPdtToolDbDeviceImpl::GetEntryImageRemotePath(const HGChar* entryNameStr, std::string& remotePath) +const HGChar* HGPdtToolDbDeviceImpl::GetImageTableName(HGUInt entryName) +{ + if (entryName >= HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH && entryName <= HGPDTTOOLDB_ENTRYNAME_SCANNING_SENSOR) + return "initial_inspection_image"; + else if (entryName >= HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE && entryName <= HGPDTTOOLDB_ENTRYNAME_MECH_PAPER_FEEDING_INCLINATION) + return "image_inspection_image"; + else if (entryName >= HGPDTTOOLDB_ENTRYNAME_SINGLE_PAGE_TEST_1 && entryName <= HGPDTTOOLDB_ENTRYNAME_CLEAR_ROLLER_COUNT) + return "pressure_inspection_image"; + return NULL; +} + +HGResult HGPdtToolDbDeviceImpl::GetEntryImageRemotePath(const HGChar* tableName, const HGChar* entryNameStr, std::string& remotePath) { assert(NULL != m_userMgr->m_sql); - assert(NULL != entryNameStr); + assert(NULL != tableName && 0 != *tableName); + assert(NULL != entryNameStr && 0 != *entryNameStr); remotePath.clear(); char sqlCmd[1024] = { 0 }; - sprintf(sqlCmd, "select %s from inspection_image where sn = '%s';", entryNameStr, m_sn.c_str()); + sprintf(sqlCmd, "select %s from %s where sn = '%s';", entryNameStr, tableName, m_sn.c_str()); int ret = mysql_query(m_userMgr->m_sql, sqlCmd); if (0 != ret) { diff --git a/db/HGPdtToolDb/HGPdtToolDbImpl.hpp b/db/HGPdtToolDb/HGPdtToolDbImpl.hpp index ca35cc8..ff21958 100644 --- a/db/HGPdtToolDb/HGPdtToolDbImpl.hpp +++ b/db/HGPdtToolDb/HGPdtToolDbImpl.hpp @@ -48,13 +48,18 @@ private: int CreateFileTable(MYSQL* sql); int CreateMainTestTable(MYSQL *sql); + // init tables int CreateInitInspTestTable(MYSQL* sql); int CreateInitInspDescTable(MYSQL* sql); + int CreateInitInspImageTable(MYSQL* sql); + // image tables int CreateImgInspTestTable(MYSQL* sql); int CreateImgInspDescTable(MYSQL* sql); + int CreateImgInspImageTable(MYSQL* sql); + // pre tables int CreatePreInspTestTable(MYSQL* sql); int CreatePreInspDescTable(MYSQL* sql); - int CreateInspImageTable(MYSQL* sql); + int CreatePreInspImageTable(MYSQL* sql); int InitMainTestItem(const HGChar *sn); int InitInspTestItem(const HGChar* tableName, const HGChar* sn); @@ -96,7 +101,8 @@ private: const HGChar* GetEntryNameStr(HGUInt entryName); const HGChar* GetTestTableName(HGUInt entryName); const HGChar* GetDescTableName(HGUInt entryName); - HGResult GetEntryImageRemotePath(const HGChar *entryNameStr, std::string &remotePath); + const HGChar* GetImageTableName(HGUInt entryName); + HGResult GetEntryImageRemotePath(const HGChar *tableName, const HGChar *entryNameStr, std::string &remotePath); private: // FTP