From 290e78164cf6526af41d3e367bd78b1e12456561 Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Tue, 3 Jan 2023 18:11:21 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=95=B0=E6=8D=AE=E5=BA=93=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=AF=8F=E4=B8=AA=E6=B5=8B=E8=AF=95=E9=A1=B9?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=A4=9A=E4=B8=AA=E6=96=87=E4=BB=B6=202.?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89=E7=9A=84=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/HGPdtToolDb/HGPdtToolDb.cpp | 75 ++- db/HGPdtToolDb/HGPdtToolDb.def | 7 +- db/HGPdtToolDb/HGPdtToolDb.h | 108 +--- db/HGPdtToolDb/HGPdtToolDbImpl.cpp | 820 ++++++++++--------------- db/HGPdtToolDb/HGPdtToolDbImpl.hpp | 42 +- db/HGPdtToolDbTest/HGPdtToolDbTest.cpp | 23 +- 6 files changed, 417 insertions(+), 658 deletions(-) diff --git a/db/HGPdtToolDb/HGPdtToolDb.cpp b/db/HGPdtToolDb/HGPdtToolDb.cpp index fbad352..3e2906b 100644 --- a/db/HGPdtToolDb/HGPdtToolDb.cpp +++ b/db/HGPdtToolDb/HGPdtToolDb.cpp @@ -199,6 +199,28 @@ HGResult HGAPI HGPdtToolDb_SetUserConfig(HGPdtToolDbUserMgr userMgr, const HGCha return userMgrImpl->SetConfig(key, value); } +HGResult HGAPI HGPdtToolDb_GetEntryNameCnStr(HGPdtToolDbUserMgr userMgr, const HGChar* entryName, HGChar* entryNameCnStr, HGUInt maxLen) +{ + if (NULL == userMgr) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr; + return userMgrImpl->GetEntryNameCnStr(entryName, entryNameCnStr, maxLen); +} + +HGResult HGAPI HGPdtToolDb_SetEntryNameCnStr(HGPdtToolDbUserMgr userMgr, const HGChar* entryName, const HGChar* entryNameCnStr) +{ + if (NULL == userMgr) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr; + return userMgrImpl->SetEntryNameCnStr(entryName, entryNameCnStr); +} + HGResult HGAPI HGPdtToolDb_OpenDevice(HGPdtToolDbUserMgr userMgr, const HGChar* sn, HGPdtToolDbDevice* device) { if (NULL == userMgr || NULL == device) @@ -296,29 +318,7 @@ HGResult HGAPI HGPdtToolDb_SetDeviceVersion(HGPdtToolDbDevice device, const HGCh return deviceImpl->SetVersion(version); } -HGResult HGAPI HGPdtToolDb_GetDeviceCurrEntry(HGPdtToolDbDevice device, HGUInt* entryName) -{ - if (NULL == device) - { - return HGBASE_ERR_INVALIDARG; - } - - HGPdtToolDbDeviceImpl* deviceImpl = (HGPdtToolDbDeviceImpl*)device; - return deviceImpl->GetCurrEntry(entryName); -} - -HGResult HGAPI HGPdtToolDb_SetDeviceCurrEntry(HGPdtToolDbDevice device, HGUInt entryName) -{ - if (NULL == device) - { - return HGBASE_ERR_INVALIDARG; - } - - HGPdtToolDbDeviceImpl* deviceImpl = (HGPdtToolDbDeviceImpl*)device; - return deviceImpl->SetCurrEntry(entryName); -} - -HGResult HGAPI HGPdtToolDb_GetDeviceEntryStatus(HGPdtToolDbDevice device, HGUInt entryName, HGUInt* entryStatus) +HGResult HGAPI HGPdtToolDb_GetDeviceEntryStatus(HGPdtToolDbDevice device, const HGChar* entryName, HGUInt* entryStatus) { if (NULL == device) { @@ -329,7 +329,7 @@ HGResult HGAPI HGPdtToolDb_GetDeviceEntryStatus(HGPdtToolDbDevice device, HGUInt return deviceImpl->GetEntryStatus(entryName, entryStatus); } -HGResult HGAPI HGPdtToolDb_GetDeviceEntryExcepDesc(HGPdtToolDbDevice device, HGUInt entryName, HGChar* excepDesc, HGUInt maxLen) +HGResult HGAPI HGPdtToolDb_GetDeviceEntryExcepDesc(HGPdtToolDbDevice device, const HGChar* entryName, HGChar* excepDesc, HGUInt maxLen) { if (NULL == device) { @@ -340,7 +340,7 @@ HGResult HGAPI HGPdtToolDb_GetDeviceEntryExcepDesc(HGPdtToolDbDevice device, HGU return deviceImpl->GetEntryExcepDesc(entryName, excepDesc, maxLen); } -HGResult HGAPI HGPdtToolDb_SetDeviceEntryStatus(HGPdtToolDbDevice device, HGUInt entryName, HGUInt entryStatus) +HGResult HGAPI HGPdtToolDb_SetDeviceEntryStatus(HGPdtToolDbDevice device, const HGChar* entryName, HGUInt entryStatus) { if (NULL == device) { @@ -351,7 +351,7 @@ HGResult HGAPI HGPdtToolDb_SetDeviceEntryStatus(HGPdtToolDbDevice device, HGUInt return deviceImpl->SetEntryStatus(entryName, entryStatus); } -HGResult HGAPI HGPdtToolDb_SetDeviceEntryExcepDesc(HGPdtToolDbDevice device, HGUInt entryName, const HGChar* excepDesc) +HGResult HGAPI HGPdtToolDb_SetDeviceEntryExcepDesc(HGPdtToolDbDevice device, const HGChar* entryName, const HGChar* excepDesc) { if (NULL == device) { @@ -362,8 +362,8 @@ HGResult HGAPI HGPdtToolDb_SetDeviceEntryExcepDesc(HGPdtToolDbDevice device, HGU return deviceImpl->SetEntryExcepDesc(entryName, excepDesc); } -HGResult HGAPI HGPdtToolDb_DownloadDeviceEntryImage(HGPdtToolDbDevice device, HGUInt entryName, - const HGChar* ftpHost, HGUShort ftpPort, const HGChar* fileName) +HGResult HGAPI HGPdtToolDb_DownloadDeviceEntryImage(HGPdtToolDbDevice device, const HGChar* entryName, + const HGChar* ftpHost, HGUShort ftpPort, HGUInt index, const HGChar* fileName) { if (NULL == device) { @@ -371,10 +371,10 @@ HGResult HGAPI HGPdtToolDb_DownloadDeviceEntryImage(HGPdtToolDbDevice device, HG } HGPdtToolDbDeviceImpl* deviceImpl = (HGPdtToolDbDeviceImpl*)device; - return deviceImpl->DownloadEntryImage(entryName, ftpHost, ftpPort, fileName); + return deviceImpl->DownloadEntryImage(entryName, ftpHost, ftpPort, index, fileName); } -HGResult HGAPI HGPdtToolDb_CheckDeviceEntryImage(HGPdtToolDbDevice device, HGUInt entryName) +HGResult HGAPI HGPdtToolDb_GetDeviceEntryImageCount(HGPdtToolDbDevice device, const HGChar* entryName, HGUInt* count) { if (NULL == device) { @@ -382,10 +382,21 @@ HGResult HGAPI HGPdtToolDb_CheckDeviceEntryImage(HGPdtToolDbDevice device, HGUIn } HGPdtToolDbDeviceImpl* deviceImpl = (HGPdtToolDbDeviceImpl*)device; - return deviceImpl->CheckEntryImage(entryName); + return deviceImpl->GetEntryImageCount(entryName, count); } -HGResult HGAPI HGPdtToolDb_UploadDeviceEntryImage(HGPdtToolDbDevice device, HGUInt entryName, +HGResult HGAPI HGPdtToolDb_ClearDeviceEntryImage(HGPdtToolDbDevice device, const HGChar* entryName) +{ + if (NULL == device) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbDeviceImpl* deviceImpl = (HGPdtToolDbDeviceImpl*)device; + return deviceImpl->ClearEntryImage(entryName); +} + +HGResult HGAPI HGPdtToolDb_UploadDeviceEntryImage(HGPdtToolDbDevice device, const HGChar* entryName, const HGChar* ftpHost, HGUShort ftpPort, const HGChar* fileName) { if (NULL == device) diff --git a/db/HGPdtToolDb/HGPdtToolDb.def b/db/HGPdtToolDb/HGPdtToolDb.def index 54fce4e..8c0f095 100644 --- a/db/HGPdtToolDb/HGPdtToolDb.def +++ b/db/HGPdtToolDb/HGPdtToolDb.def @@ -19,6 +19,8 @@ HGPdtToolDb_DownloadFile HGPdtToolDb_Export HGPdtToolDb_GetUserConfig HGPdtToolDb_SetUserConfig +HGPdtToolDb_GetEntryNameCnStr +HGPdtToolDb_SetEntryNameCnStr HGPdtToolDb_OpenDevice HGPdtToolDb_CloseDevice HGPdtToolDb_GetDeviceName @@ -27,12 +29,11 @@ HGPdtToolDb_GetDeviceType HGPdtToolDb_SetDeviceType HGPdtToolDb_GetDeviceVersion HGPdtToolDb_SetDeviceVersion -HGPdtToolDb_GetDeviceCurrEntry -HGPdtToolDb_SetDeviceCurrEntry HGPdtToolDb_GetDeviceEntryStatus HGPdtToolDb_GetDeviceEntryExcepDesc HGPdtToolDb_SetDeviceEntryStatus HGPdtToolDb_SetDeviceEntryExcepDesc HGPdtToolDb_DownloadDeviceEntryImage -HGPdtToolDb_CheckDeviceEntryImage +HGPdtToolDb_GetDeviceEntryImageCount +HGPdtToolDb_ClearDeviceEntryImage HGPdtToolDb_UploadDeviceEntryImage diff --git a/db/HGPdtToolDb/HGPdtToolDb.h b/db/HGPdtToolDb/HGPdtToolDb.h index 584818a..e823b00 100644 --- a/db/HGPdtToolDb/HGPdtToolDb.h +++ b/db/HGPdtToolDb/HGPdtToolDb.h @@ -19,79 +19,6 @@ /* 普通账户 */ #define HGPDTTOOLDB_USERTYPE_NORMAL 2L -/* 拨码开关校验 */ -#define HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH 1L -/* 检查船型开关功能 */ -#define HGPDTTOOLDB_ENTRYNAME_ROCKER_SWITCH 2L -/* 设备上电并观察开机状态 */ -#define HGPDTTOOLDB_ENTRYNAME_BOOT_STATUS 3L -/* 检查液晶显示 */ -#define HGPDTTOOLDB_ENTRYNAME_LCD_DISPLAY 4L -/* 清理纸道功能确认 */ -#define HGPDTTOOLDB_ENTRYNAME_CLEAR_PAPER_PATH 5L -/* 按键功能检测 */ -#define HGPDTTOOLDB_ENTRYNAME_KEY_FUNCTION 6L -/* 计数模式检测 */ -#define HGPDTTOOLDB_ENTRYNAME_COUNTING_MODE 7L -/* 歪斜检测 */ -#define HGPDTTOOLDB_ENTRYNAME_SKEW_DETECTION 8L -/* 分纸电机检测 */ -#define HGPDTTOOLDB_ENTRYNAME_SEPARATER_MOTOR 9L -/* CIS原图初检 */ -#define HGPDTTOOLDB_ENTRYNAME_CIS_ORIGINAL_IMAGE 10L -/* 主机风扇功能检测 */ -#define HGPDTTOOLDB_ENTRYNAME_HOST_FAN 11L -/* 超声波模块检验 */ -#define HGPDTTOOLDB_ENTRYNAME_ULTRASONIC_MODULE 12L -/* LED灯状态检查 */ -#define HGPDTTOOLDB_ENTRYNAME_LED_LIGHT 13L -/* 复位检查 */ -#define HGPDTTOOLDB_ENTRYNAME_RESET 14L -/* 走纸检查 */ -#define HGPDTTOOLDB_ENTRYNAME_PAPER_FEED 15L -/* 开盖传感器检查 */ -#define HGPDTTOOLDB_ENTRYNAME_COVER_SENSOR 16L -/* 扫描传感器检查 */ -#define HGPDTTOOLDB_ENTRYNAME_SCANNING_SENSOR 17L - -/* 配置速度模式 */ -#define HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE 101L -/* 放置校正纸 */ -#define HGPDTTOOLDB_ENTRYNAME_PLACE_CORRECTION_PAPER 102L -/* 自动平场校正 */ -#define HGPDTTOOLDB_ENTRYNAME_AUTO_FLAT_FIELD 103L -/* 重启设备 */ -#define HGPDTTOOLDB_ENTRYNAME_REBOOT_DEVICE 104L -/* 扫描图像质量确认 */ -#define HGPDTTOOLDB_ENTRYNAME_IMAGE_QUALITY 105L -/* 色卡纸成像质量评估 */ -#define HGPDTTOOLDB_ENTRYNAME_COLORCARD_IMAGEING_QUALITY 106L -/* 色卡纸偏色成像质量评估 */ -#define HGPDTTOOLDB_ENTRYNAME_COLORCARD_BIAS_IMAGEING_QUALITY 107L -/* 清晰度质量评估 */ -#define HGPDTTOOLDB_ENTRYNAME_CLARITY_QUALITY 108L -/* 畸变修正 */ -#define HGPDTTOOLDB_ENTRYNAME_DISTORTION 109L -/* 设置休眠 */ -#define HGPDTTOOLDB_ENTRYNAME_DORMANCY 110L -/* 歪斜挡位检测 */ -#define HGPDTTOOLDB_ENTRYNAME_SKEW_GEAR 111L -/* 分纸强度检测 */ -#define HGPDTTOOLDB_ENTRYNAME_PAPER_SEPARATION_STRENGTH 112L -/* 机械走纸倾斜检测 */ -#define HGPDTTOOLDB_ENTRYNAME_MECH_PAPER_FEEDING_INCLINATION 113L - -/* 单张测试1 */ -#define HGPDTTOOLDB_ENTRYNAME_SINGLE_PAGE_TEST_1 201L -/* 单张测试2 */ -#define HGPDTTOOLDB_ENTRYNAME_SINGLE_PAGE_TEST_2 202L -/* 单张测试3 */ -#define HGPDTTOOLDB_ENTRYNAME_SINGLE_PAGE_TEST_3 203L -/* 压力测试2轮 */ -#define HGPDTTOOLDB_ENTRYNAME_PRESSUER_TEST 204L -/* 清除滚轴计数 */ -#define HGPDTTOOLDB_ENTRYNAME_CLEAR_ROLLER_COUNT 205L - /* 未测试 */ #define HGPDTTOOLDB_ENTRYSTATUS_NOTTEST 0L /* 不通过 */ @@ -156,6 +83,12 @@ HGEXPORT HGResult HGAPI HGPdtToolDb_GetUserConfig(HGPdtToolDbUserMgr userMgr, co /* 设置用户配置 */ HGEXPORT HGResult HGAPI HGPdtToolDb_SetUserConfig(HGPdtToolDbUserMgr userMgr, const HGChar* key, const HGChar* value); +/* 获取测试项中文字符串 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_GetEntryNameCnStr(HGPdtToolDbUserMgr userMgr, const HGChar* entryName, HGChar* entryNameCnStr, HGUInt maxLen); + +/* 设置测试项中文字符串 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_SetEntryNameCnStr(HGPdtToolDbUserMgr userMgr, const HGChar* entryName, const HGChar* entryNameCnStr); + /* 创建/打开设备,sn标识设备唯一序列号 */ HGEXPORT HGResult HGAPI HGPdtToolDb_OpenDevice(HGPdtToolDbUserMgr userMgr, const HGChar* sn, HGPdtToolDbDevice *device); @@ -180,33 +113,30 @@ HGEXPORT HGResult HGAPI HGPdtToolDb_GetDeviceVersion(HGPdtToolDbDevice device, H /* 设置设备版本 */ HGEXPORT HGResult HGAPI HGPdtToolDb_SetDeviceVersion(HGPdtToolDbDevice device, const HGChar* version); -/* 获取当前的测试项, 0表示还未测试,0xFFFFFFFF表示已经测试完成 */ -HGEXPORT HGResult HGAPI HGPdtToolDb_GetDeviceCurrEntry(HGPdtToolDbDevice device, HGUInt *entryName); - -/* 设置当前的测试项, 0表示还未测试,0xFFFFFFFF表示已经测试完成 */ -HGEXPORT HGResult HGAPI HGPdtToolDb_SetDeviceCurrEntry(HGPdtToolDbDevice device, HGUInt entryName); - /* 获取某个测试项的状态 */ -HGEXPORT HGResult HGAPI HGPdtToolDb_GetDeviceEntryStatus(HGPdtToolDbDevice device, HGUInt entryName, HGUInt *entryStatus); +HGEXPORT HGResult HGAPI HGPdtToolDb_GetDeviceEntryStatus(HGPdtToolDbDevice device, const HGChar* entryName, HGUInt *entryStatus); /* 获取某个测试项的异常说明 */ -HGEXPORT HGResult HGAPI HGPdtToolDb_GetDeviceEntryExcepDesc(HGPdtToolDbDevice device, HGUInt entryName, HGChar *excepDesc, HGUInt maxLen); +HGEXPORT HGResult HGAPI HGPdtToolDb_GetDeviceEntryExcepDesc(HGPdtToolDbDevice device, const HGChar* entryName, HGChar *excepDesc, HGUInt maxLen); /* 设置某个测试项的状态 */ -HGEXPORT HGResult HGAPI HGPdtToolDb_SetDeviceEntryStatus(HGPdtToolDbDevice device, HGUInt entryName, HGUInt entryStatus); +HGEXPORT HGResult HGAPI HGPdtToolDb_SetDeviceEntryStatus(HGPdtToolDbDevice device, const HGChar* entryName, HGUInt entryStatus); /* 设置某个测试项的异常说明 */ -HGEXPORT HGResult HGAPI HGPdtToolDb_SetDeviceEntryExcepDesc(HGPdtToolDbDevice device, HGUInt entryName, const HGChar* excepDesc); +HGEXPORT HGResult HGAPI HGPdtToolDb_SetDeviceEntryExcepDesc(HGPdtToolDbDevice device, const HGChar* entryName, const HGChar* excepDesc); /* 下载某个测试项关联的图像 */ -HGEXPORT HGResult HGAPI HGPdtToolDb_DownloadDeviceEntryImage(HGPdtToolDbDevice device, HGUInt entryName, - const HGChar* ftpHost, HGUShort ftpPort, const HGChar* fileName); +HGEXPORT HGResult HGAPI HGPdtToolDb_DownloadDeviceEntryImage(HGPdtToolDbDevice device, const HGChar* entryName, + const HGChar* ftpHost, HGUShort ftpPort, HGUInt index, const HGChar* fileName); -/* 检查某个测试项关联的图像 */ -HGEXPORT HGResult HGAPI HGPdtToolDb_CheckDeviceEntryImage(HGPdtToolDbDevice device, HGUInt entryName); +/* 获取某个测试项关联的图像数量 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_GetDeviceEntryImageCount(HGPdtToolDbDevice device, const HGChar* entryName, HGUInt* count); -/* 上传/更新某个测试项关联的图像 */ -HGEXPORT HGResult HGAPI HGPdtToolDb_UploadDeviceEntryImage(HGPdtToolDbDevice device, HGUInt entryName, +/* 清理某个测试项关联的图像 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_ClearDeviceEntryImage(HGPdtToolDbDevice device, const HGChar* entryName); + +/* 上传某个测试项关联的图像 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_UploadDeviceEntryImage(HGPdtToolDbDevice device, const HGChar* entryName, const HGChar* ftpHost, HGUShort ftpPort, const HGChar* fileName); diff --git a/db/HGPdtToolDb/HGPdtToolDbImpl.cpp b/db/HGPdtToolDb/HGPdtToolDbImpl.cpp index 50fede0..4e6527d 100644 --- a/db/HGPdtToolDb/HGPdtToolDbImpl.cpp +++ b/db/HGPdtToolDb/HGPdtToolDbImpl.cpp @@ -4,54 +4,7 @@ #include "base/HGInfo.h" #include "base/HGUtility.h" #include "HGString.h" - -const HGChar* INITIAL_INSPECTION[] = -{ - "dial_switch", - "rocker_switch", - "boot_status", - "lcd_display", - "clear_paper_path", - "key_function", - "counting_mode", - "skew_detection", - "separater_motor", - "cis_original_image", - "host_fan", - "ultrasonic_module", - "led_light", - "reset", - "paper_feed", - "cover_sensor", - "scanning_sensor" -}; - -const HGChar* IMAGE_INSPECTION[] = -{ - "configure_speed_mode", - "place_correction_paper", - "auto_flat_field", - "reboot_device", - "image_quality", - "colorcard_imaging_quality", - "colorcard_bias_imaging_quality", - "clarity_quality", - "distortion", - "dormancy", - "skew_gear", - "paper_separater_strengch", - "mech_paper_feeding_inclination" -}; - -const HGChar* PRESSURE_INSPECTION[] = -{ - "single_page_test_1", - "single_page_test_2", - "single_page_test_3", - "pressure_test", - "clear_roller_count" -}; - +#include HGPdtToolDbUserMgrImpl::HGPdtToolDbUserMgrImpl() { @@ -112,10 +65,10 @@ HGResult HGPdtToolDbUserMgrImpl::Create(const HGChar* host, HGUShort port, const return HGPDTTOOLDB_ERR_WRONG_PASSWORD; } - if (0 != CreateFileTable(sql) || 0 != CreateMainTestTable(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)) + if (0 != CreateFileTable(sql) || 0 != CreateEntryNameCnStrTable(sql) || 0 != CreateMainTestTable(sql) + || 0 != CreateInspectionTable(sql, "inspection_test") + || 0 != CreateInspectionTable(sql, "inspection_desc") + || 0 != CreateInspectionTable(sql, "inspection_image")) { mysql_close(sql); return HGBASE_ERR_FAIL; @@ -678,35 +631,60 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) cmd += ", main_test.device_type"; cmd += ", main_test.device_version"; - for (int i = 0; i < sizeof(INITIAL_INSPECTION) / sizeof(const HGChar*); ++i) + std::vector> titleInfo; + titleInfo.push_back(std::pair("设备序列号", 1)); + titleInfo.push_back(std::pair("创建时间", 1)); + titleInfo.push_back(std::pair("创建用户", 1)); + titleInfo.push_back(std::pair("最后修改时间", 1)); + titleInfo.push_back(std::pair("最后修改用户", 1)); + titleInfo.push_back(std::pair("设备名", 1)); + titleInfo.push_back(std::pair("设备类型", 1)); + titleInfo.push_back(std::pair("设备固件版本", 1)); + + std::list testCols, descCols, imageCols; + GetCols(m_sql, "inspection_test", testCols); + GetCols(m_sql, "inspection_desc", descCols); + GetCols(m_sql, "inspection_image", imageCols); + + for (std::list::const_iterator testIter = testCols.begin(); testIter != testCols.end(); ++testIter) { - cmd += ", initial_inspection_test."; - cmd += INITIAL_INSPECTION[i]; - cmd += ", initial_inspection_desc."; - cmd += INITIAL_INSPECTION[i]; - } - for (int i = 0; i < sizeof(IMAGE_INSPECTION) / sizeof(const HGChar*); ++i) - { - cmd += ", image_inspection_test."; - cmd += IMAGE_INSPECTION[i]; - cmd += ", image_inspection_desc."; - cmd += IMAGE_INSPECTION[i]; - } - for (int i = 0; i < sizeof(PRESSURE_INSPECTION) / sizeof(const HGChar*); ++i) - { - cmd += ", pressure_inspection_test."; - cmd += PRESSURE_INSPECTION[i]; - cmd += ", pressure_inspection_desc."; - cmd += PRESSURE_INSPECTION[i]; + HGChar entryNameCnStr[256] = {0}; + GetEntryNameCnStr(testIter->c_str(), entryNameCnStr, 256); + std::string entryNameCn = Utf8ToStdString(entryNameCnStr); + if (entryNameCn.empty()) + entryNameCn = testIter->c_str(); + + cmd += ", inspection_test."; + cmd += *testIter; + titleInfo.push_back(std::pair(entryNameCn, 2)); + + for (std::list::const_iterator descIter = descCols.begin(); descIter != descCols.end(); ++descIter) + { + if (*testIter == *descIter) + { + cmd += ", inspection_desc."; + cmd += *testIter; + titleInfo.push_back(std::pair(entryNameCn + "(异常说明)", 1)); + break; + } + } + + for (std::list::const_iterator imageIter = imageCols.begin(); imageIter != imageCols.end(); ++imageIter) + { + if (*testIter == *imageIter) + { + cmd += ", inspection_image."; + cmd += *testIter; + titleInfo.push_back(std::pair(entryNameCn + "(图像数量)", 1)); + break; + } + } } cmd += " from main_test"; - cmd += " inner join initial_inspection_test on main_test.sn = initial_inspection_test.sn"; - cmd += " inner join initial_inspection_desc on main_test.sn = initial_inspection_desc.sn"; - cmd += " inner join image_inspection_test on main_test.sn = image_inspection_test.sn"; - cmd += " inner join image_inspection_desc on main_test.sn = image_inspection_desc.sn"; - cmd += " inner join pressure_inspection_test on main_test.sn = pressure_inspection_test.sn"; - cmd += " inner join pressure_inspection_desc on main_test.sn = pressure_inspection_desc.sn"; + cmd += " inner join inspection_test on main_test.sn = inspection_test.sn"; + cmd += " inner join inspection_desc on main_test.sn = inspection_desc.sn"; + cmd += " inner join inspection_image on main_test.sn = inspection_image.sn"; cmd += ";"; int ret = mysql_query(m_sql, cmd.c_str()); @@ -728,44 +706,13 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) return HGBASE_ERR_ACCESSDENIED; } - const HGChar* MAIN_TEST_CN[] = {"设备序列号", "创建时间", "创建用户", "最后修改时间", "最后修改用户", - "设备名", "设备类型", "设备固件版本"}; - for (int i = 0; i < sizeof(MAIN_TEST_CN) / sizeof(const HGChar*); ++i) + for (std::vector>::const_iterator titleIter = titleInfo.begin(); + titleIter != titleInfo.end(); ++titleIter) { - std::string title = (std::string)MAIN_TEST_CN[i] + "\t"; - fwrite(title.c_str(), 1, title.size(), file); + std::string t = titleIter->first + "\t"; + fwrite(t.c_str(), 1, t.size(), file); } - const HGChar* INITTIAL_INSPECTION_CN[] = {"拨码开关校验", "检查船型开关功能", "设备上电并观察开机状态", "检查液晶显示", - "清理纸道功能确认", "按键功能检测", "计数模式检测", "歪斜检测", "分纸电机检测", "CIS原图初检", "主机风扇功能检测", - "超声波模块检验", "LED灯状态检查", "复位检查", "走纸检查", "开盖传感器检查", "扫描传感器检查"}; - for (int i = 0; i < sizeof(INITTIAL_INSPECTION_CN) / sizeof(const HGChar*); ++i) - { - std::string title = (std::string)INITTIAL_INSPECTION_CN[i] + "\t"; - fwrite(title.c_str(), 1, title.size(), file); - std::string descTitle = (std::string)INITTIAL_INSPECTION_CN[i] + "异常说明" + "\t"; - fwrite(descTitle.c_str(), 1, descTitle.size(), file); - } - - const HGChar* IMAGE_INSPECTION_CN[] = {"配置速度模式", "放置校正纸", "自动平场校正", "重启设备", "扫描图像质量确认", - "色卡纸成像质量评估", "色卡纸偏色成像质量评估", "清晰度质量评估", "畸变修正", "设置休眠", "歪斜挡位检测", - "分纸强度检测", "机械走纸倾斜检测"}; - for (int i = 0; i < sizeof(IMAGE_INSPECTION_CN) / sizeof(const HGChar*); ++i) - { - std::string title = (std::string)IMAGE_INSPECTION_CN[i] + "\t"; - fwrite(title.c_str(), 1, title.size(), file); - std::string descTitle = (std::string)IMAGE_INSPECTION_CN[i] + "异常说明" + "\t"; - fwrite(descTitle.c_str(), 1, descTitle.size(), file); - } - - const HGChar* PRESSURE_INSPECTION_CN[] = {"单张测试1", "单张测试2", "单张测试3", "压力测试2轮","清除滚轴计数"}; - for (int i = 0; i < sizeof(PRESSURE_INSPECTION_CN) / sizeof(const HGChar*); ++i) - { - std::string title = (std::string)PRESSURE_INSPECTION_CN[i] + "\t"; - fwrite(title.c_str(), 1, title.size(), file); - std::string descTitle = (std::string)PRESSURE_INSPECTION_CN[i] + "异常说明" + "\t"; - fwrite(descTitle.c_str(), 1, descTitle.size(), file); - } fwrite("\n", 1, strlen("\n"), file); MYSQL_ROW row = NULL; @@ -776,8 +723,7 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) { std::string value; - unsigned int baseCols = sizeof(MAIN_TEST_CN) / sizeof(const HGChar*); - if (i < baseCols) + if (1 == titleInfo[i].second) { if (NULL != row[i]) { @@ -786,19 +732,9 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) } else { - if (0 == (i - baseCols) % 2) - { - assert(NULL != row[i]); - const HGChar* ENTRY_STATUS_CN[] = { "未测试", "不通过", "不支持", "通过" }; - value = ENTRY_STATUS_CN[(HGUInt)atoll(row[i])]; - } - else - { - if (NULL != row[i]) - { - value = Utf8ToStdString(row[i]); - } - } + assert(NULL != row[i]); + const HGChar* ENTRY_STATUS_CN[] = { "未测试", "不通过", "不支持", "通过" }; + value = ENTRY_STATUS_CN[(HGUInt)atoll(row[i])]; } value += "\t"; @@ -810,6 +746,7 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) fclose(file); mysql_free_result(sqlRes); + return HGBASE_ERR_OK; } @@ -896,6 +833,92 @@ HGResult HGPdtToolDbUserMgrImpl::SetConfig(const HGChar* key, const HGChar* valu return HGBASE_ERR_FAIL; } +HGResult HGPdtToolDbUserMgrImpl::GetEntryNameCnStr(const HGChar* entryName, HGChar* entryNameCnStr, HGUInt maxLen) +{ + if (NULL == m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == entryName || 0 == *entryName) + { + return HGBASE_ERR_INVALIDARG; + } + + if (NULL == entryNameCnStr || 0 == maxLen) + { + return HGBASE_ERR_INVALIDARG; + } + + char sqlCmd[1024] = { 0 }; + sprintf(sqlCmd, "select value from entry_name_cn where name = '%s';", entryName); + int ret = mysql_query(m_sql, sqlCmd); + if (0 != ret) + { + return HGBASE_ERR_FAIL; + } + + MYSQL_RES* sqlRes = mysql_use_result(m_sql); + if (NULL == sqlRes) + { + return HGBASE_ERR_FAIL; + } + + MYSQL_ROW row = mysql_fetch_row(sqlRes); + if (NULL == row) + { + mysql_free_result(sqlRes); + return HGBASE_ERR_FAIL; + } + + if (NULL == row[0]) + { + *entryNameCnStr = '\0'; + mysql_free_result(sqlRes); + return HGBASE_ERR_OK; + } + + if (maxLen < strlen(row[0]) + 1) + { + mysql_free_result(sqlRes); + return HGBASE_ERR_FAIL; + } + + strcpy(entryNameCnStr, row[0]); + mysql_free_result(sqlRes); + return HGBASE_ERR_OK; +} + +HGResult HGPdtToolDbUserMgrImpl::SetEntryNameCnStr(const HGChar* entryName, const HGChar* entryNameCnStr) +{ + if (NULL == m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == entryName || 0 == *entryName) + { + return HGBASE_ERR_INVALIDARG; + } + + char sqlCmd[1024]; + sprintf(sqlCmd, "insert into entry_name_cn (name, value) values ('%s', '%s');", entryName, (NULL != entryNameCnStr) ? entryNameCnStr : ""); + int ret = mysql_query(m_sql, sqlCmd); + if (0 == ret) + { + return HGBASE_ERR_OK; + } + + if (1062 == mysql_errno(m_sql)) + { + sprintf(sqlCmd, "update entry_name_cn set value = '%s' where name = '%s';", (NULL != entryNameCnStr) ? entryNameCnStr : "", entryName); + int ret = mysql_query(m_sql, sqlCmd); + return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; + } + + return HGBASE_ERR_FAIL; +} + HGResult HGPdtToolDbUserMgrImpl::OpenDevice(const HGChar* sn, class HGPdtToolDbDeviceImpl** deviceImpl) { if (NULL == m_sql) @@ -916,15 +939,9 @@ HGResult HGPdtToolDbUserMgrImpl::OpenDevice(const HGChar* sn, class HGPdtToolDbD } 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)) + || 0 != InitInspectionItem("inspection_test", sn) + || 0 != InitInspectionItem("inspection_desc", sn) + || 0 != InitInspectionItem("inspection_image", sn)) { mysql_query(m_sql, "rollback;"); return HGBASE_ERR_FAIL; @@ -1068,6 +1085,38 @@ int HGPdtToolDbUserMgrImpl::GetUserLoginInfo(MYSQL* sql, const HGChar* userName, return 0; } +HGUInt HGPdtToolDbUserMgrImpl::GetCols(MYSQL* sql, const HGChar* tableName, std::list& cols) +{ + assert(NULL != sql); + assert(NULL != tableName && 0 != *tableName); + cols.clear(); + + char sqlCmd[1024]; + sprintf(sqlCmd, "select COLUMN_NAME from information_schema.COLUMNS where table_name = '%s';", tableName); + int ret = mysql_query(sql, sqlCmd); + if (0 != ret) + { + return HGBASE_ERR_FAIL; + } + + MYSQL_RES* sqlRes = mysql_use_result(sql); + if (NULL == sqlRes) + { + return HGBASE_ERR_FAIL; + } + + MYSQL_ROW row = NULL; + while ((row = mysql_fetch_row(sqlRes)) != NULL) + { + assert(NULL != row[0]); + if (0 != strcmp("sn", row[0])) + cols.push_back(row[0]); + } + + mysql_free_result(sqlRes); + return HGBASE_ERR_OK; +} + int HGPdtToolDbUserMgrImpl::CreateFileTable(MYSQL* sql) { assert(NULL != sql); @@ -1078,6 +1127,16 @@ int HGPdtToolDbUserMgrImpl::CreateFileTable(MYSQL* sql) return mysql_query(sql, cmd.c_str()); } +int HGPdtToolDbUserMgrImpl::CreateEntryNameCnStrTable(MYSQL* sql) +{ + assert(NULL != sql); + + std::string cmd = "create table if not exists entry_name_cn (name varchar(20) not null primary key"; + cmd += ", value text"; + cmd += ");"; + return mysql_query(sql, cmd.c_str()); +} + int HGPdtToolDbUserMgrImpl::CreateMainTestTable(MYSQL* sql) { assert(NULL != sql); @@ -1087,7 +1146,6 @@ int HGPdtToolDbUserMgrImpl::CreateMainTestTable(MYSQL* sql) cmd += ", create_user text not null"; cmd += ", last_modify_time datetime"; cmd += ", last_modify_user text not null"; - cmd += ", current_entry int unsigned default 0"; cmd += ", device_name text"; cmd += ", device_type text"; cmd += ", device_version text"; @@ -1095,148 +1153,14 @@ int HGPdtToolDbUserMgrImpl::CreateMainTestTable(MYSQL* sql) return mysql_query(sql, cmd.c_str()); } -int HGPdtToolDbUserMgrImpl::CreateInitInspTestTable(MYSQL* sql) +int HGPdtToolDbUserMgrImpl::CreateInspectionTable(MYSQL* sql, const HGChar* tableName) { assert(NULL != sql); + assert(NULL != tableName && 0 != *tableName); - std::string cmd = "create table if not exists initial_inspection_test (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 += " tinyint unsigned default 0"; - } - cmd += ");"; - return mysql_query(sql, cmd.c_str()); -} - -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(INITIAL_INSPECTION) / sizeof(const HGChar*); - for (int i = 0; i < size; ++i) - { - cmd += ", "; - 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 += ");"; - return mysql_query(sql, cmd.c_str()); -} - -int HGPdtToolDbUserMgrImpl::CreateImgInspTestTable(MYSQL* sql) -{ - assert(NULL != sql); - - std::string cmd = "create table if not exists image_inspection_test (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 += " tinyint unsigned default 0"; - } - cmd += ");"; - return mysql_query(sql, cmd.c_str()); -} - -int HGPdtToolDbUserMgrImpl::CreateImgInspDescTable(MYSQL* sql) -{ - assert(NULL != sql); - - std::string cmd = "create table if not exists image_inspection_desc (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::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); - - std::string cmd = "create table if not exists pressure_inspection_test (sn varchar(20) not null primary key"; - int size = sizeof(PRESSURE_INSPECTION) / sizeof(const HGChar*); - for (int i = 0; i < size; ++i) - { - cmd += ", "; - cmd += PRESSURE_INSPECTION[i]; - cmd += " tinyint unsigned default 0"; - } - cmd += ");"; - return mysql_query(sql, cmd.c_str()); -} - -int HGPdtToolDbUserMgrImpl::CreatePreInspDescTable(MYSQL* sql) -{ - assert(NULL != sql); - - std::string cmd = "create table if not exists pressure_inspection_desc (sn varchar(20) not null primary key"; - int size = sizeof(PRESSURE_INSPECTION) / sizeof(const HGChar*); - for (int i = 0; i < size; ++i) - { - cmd += ", "; - cmd += PRESSURE_INSPECTION[i]; - cmd += " text"; - } - cmd += ");"; - return mysql_query(sql, cmd.c_str()); -} - -int HGPdtToolDbUserMgrImpl::CreatePreInspImageTable(MYSQL* sql) -{ - assert(NULL != sql); - - 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 += PRESSURE_INSPECTION[i]; - cmd += " text"; - } - cmd += ");"; - return mysql_query(sql, cmd.c_str()); + char sqlCmd[1024]; + sprintf(sqlCmd, "create table if not exists %s (sn varchar(20) not null primary key);", tableName); + return mysql_query(sql, sqlCmd); } int HGPdtToolDbUserMgrImpl::InitMainTestItem(const HGChar* sn) @@ -1250,7 +1174,7 @@ int HGPdtToolDbUserMgrImpl::InitMainTestItem(const HGChar* sn) return (1062 == mysql_errno(m_sql)) ? 0 : ret; } -int HGPdtToolDbUserMgrImpl::InitInspTestItem(const HGChar* tableName, const HGChar* sn) +int HGPdtToolDbUserMgrImpl::InitInspectionItem(const HGChar* tableName, const HGChar* sn) { assert(NULL != tableName && 0 != *tableName); assert(NULL != sn && 0 != *sn && NULL != m_sql); @@ -1303,89 +1227,20 @@ HGResult HGPdtToolDbDeviceImpl::SetVersion(const HGChar* version) return SetProperty("device_version", version); } -HGResult HGPdtToolDbDeviceImpl::GetCurrEntry(HGUInt* entryName) +HGResult HGPdtToolDbDeviceImpl::GetEntryStatus(const HGChar* entryName, HGUInt* entryStatus) { if (NULL == m_userMgr->m_sql) { return HGBASE_ERR_FAIL; } - if (NULL == entryName) + if (NULL == entryName || 0 == *entryName || NULL == entryStatus) { return HGBASE_ERR_INVALIDARG; } char sqlCmd[1024] = { 0 }; - sprintf(sqlCmd, "select current_entry from main_test where sn = '%s';", m_sn.c_str()); - int ret = mysql_query(m_userMgr->m_sql, sqlCmd); - if (0 != ret) - { - return HGBASE_ERR_FAIL; - } - - MYSQL_RES* sqlRes = mysql_use_result(m_userMgr->m_sql); - if (NULL == sqlRes) - { - return HGBASE_ERR_FAIL; - } - - MYSQL_ROW row = mysql_fetch_row(sqlRes); - if (NULL == row) - { - mysql_free_result(sqlRes); - return HGBASE_ERR_FAIL; - } - - assert(NULL != row[0]); - *entryName = (HGUInt)atoll(row[0]); - mysql_free_result(sqlRes); - return HGBASE_ERR_OK; -} - -HGResult HGPdtToolDbDeviceImpl::SetCurrEntry(HGUInt entryName) -{ - if (NULL == m_userMgr->m_sql) - { - return HGBASE_ERR_FAIL; - } - - if (0 != entryName && 0xFFFFFFFF != entryName) - { - const HGChar* entryNameStr = GetEntryNameStr(entryName); - if (NULL == entryNameStr) - { - return HGBASE_ERR_INVALIDARG; - } - } - - char sqlCmd[1024] = { 0 }; - sprintf(sqlCmd, "update main_test set current_entry = %u, last_modify_time = now(), last_modify_user = '%s' where sn = '%s';", - entryName, m_userMgr->m_userName.c_str(), m_sn.c_str()); - int ret = mysql_query(m_userMgr->m_sql, sqlCmd); - return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; -} - -HGResult HGPdtToolDbDeviceImpl::GetEntryStatus(HGUInt entryName, HGUInt* entryStatus) -{ - if (NULL == m_userMgr->m_sql) - { - return HGBASE_ERR_FAIL; - } - - if (NULL == entryStatus) - { - return HGBASE_ERR_INVALIDARG; - } - - const HGChar* entryNameStr = GetEntryNameStr(entryName); - const HGChar* tableName = GetTestTableName(entryName); - if (NULL == entryNameStr || NULL == tableName) - { - return HGBASE_ERR_INVALIDARG; - } - - char sqlCmd[1024] = { 0 }; - sprintf(sqlCmd, "select %s from %s where sn = '%s';", entryNameStr, tableName, m_sn.c_str()); + sprintf(sqlCmd, "select %s from inspection_test where sn = '%s';", entryName, m_sn.c_str()); int ret = mysql_query(m_userMgr->m_sql, sqlCmd); if (0 != ret) { @@ -1411,21 +1266,14 @@ HGResult HGPdtToolDbDeviceImpl::GetEntryStatus(HGUInt entryName, HGUInt* entrySt return HGBASE_ERR_OK; } -HGResult HGPdtToolDbDeviceImpl::SetEntryStatus(HGUInt entryName, HGUInt entryStatus) +HGResult HGPdtToolDbDeviceImpl::SetEntryStatus(const HGChar* entryName, HGUInt entryStatus) { if (NULL == m_userMgr->m_sql) { return HGBASE_ERR_FAIL; } - if (entryStatus > HGPDTTOOLDB_ENTRYSTATUS_PASS) - { - return HGBASE_ERR_INVALIDARG; - } - - const HGChar* entryNameStr = GetEntryNameStr(entryName); - const HGChar* tableName = GetTestTableName(entryName); - if (NULL == entryNameStr || NULL == tableName) + if (NULL == entryName || 0 == *entryName || entryStatus > HGPDTTOOLDB_ENTRYSTATUS_PASS) { return HGBASE_ERR_INVALIDARG; } @@ -1439,7 +1287,10 @@ HGResult HGPdtToolDbDeviceImpl::SetEntryStatus(HGUInt entryName, HGUInt entrySta return HGBASE_ERR_FAIL; } - sprintf(sqlCmd, "update %s set %s = %u where sn = '%s';", tableName, entryNameStr, entryStatus, m_sn.c_str()); + sprintf(sqlCmd, "alter table inspection_test add column %s tinyint unsigned default 0;", entryName); + mysql_query(m_userMgr->m_sql, sqlCmd); + + sprintf(sqlCmd, "update inspection_test set %s = %u where sn = '%s';", entryName, entryStatus, m_sn.c_str()); ret = mysql_query(m_userMgr->m_sql, sqlCmd); if (0 != ret) { @@ -1462,27 +1313,20 @@ HGResult HGPdtToolDbDeviceImpl::SetEntryStatus(HGUInt entryName, HGUInt entrySta return HGBASE_ERR_OK; } -HGResult HGPdtToolDbDeviceImpl::GetEntryExcepDesc(HGUInt entryName, HGChar* excepDesc, HGUInt maxLen) +HGResult HGPdtToolDbDeviceImpl::GetEntryExcepDesc(const HGChar* entryName, HGChar* excepDesc, HGUInt maxLen) { if (NULL == m_userMgr->m_sql) { return HGBASE_ERR_FAIL; } - if (NULL == excepDesc || 0 == maxLen) - { - return HGBASE_ERR_INVALIDARG; - } - - const HGChar* entryNameStr = GetEntryNameStr(entryName); - const HGChar* tableName = GetDescTableName(entryName); - if (NULL == entryNameStr || NULL == tableName) + if (NULL == entryName || 0 == *entryName || NULL == excepDesc || 0 == maxLen) { return HGBASE_ERR_INVALIDARG; } char sqlCmd[1024] = { 0 }; - sprintf(sqlCmd, "select %s from %s where sn = '%s';", entryNameStr, tableName, m_sn.c_str()); + sprintf(sqlCmd, "select %s from inspection_desc where sn = '%s';", entryName, m_sn.c_str()); int ret = mysql_query(m_userMgr->m_sql, sqlCmd); if (0 != ret) { @@ -1520,16 +1364,14 @@ HGResult HGPdtToolDbDeviceImpl::GetEntryExcepDesc(HGUInt entryName, HGChar* exce return HGBASE_ERR_OK; } -HGResult HGPdtToolDbDeviceImpl::SetEntryExcepDesc(HGUInt entryName, const HGChar* excepDesc) +HGResult HGPdtToolDbDeviceImpl::SetEntryExcepDesc(const HGChar* entryName, const HGChar* excepDesc) { if (NULL == m_userMgr->m_sql) { return HGBASE_ERR_FAIL; } - const HGChar* entryNameStr = GetEntryNameStr(entryName); - const HGChar* tableName = GetDescTableName(entryName); - if (NULL == entryNameStr || NULL == tableName) + if (NULL == entryName || 0 == *entryName) { return HGBASE_ERR_INVALIDARG; } @@ -1543,8 +1385,11 @@ HGResult HGPdtToolDbDeviceImpl::SetEntryExcepDesc(HGUInt entryName, const HGChar return HGBASE_ERR_FAIL; } - sprintf(sqlCmd, "update %s set %s = '%s' where sn = '%s';", - tableName, entryNameStr, (NULL != excepDesc) ? excepDesc : "", m_sn.c_str()); + sprintf(sqlCmd, "alter table inspection_desc add column %s text;", entryName); + mysql_query(m_userMgr->m_sql, sqlCmd); + + sprintf(sqlCmd, "update inspection_desc set %s = '%s' where sn = '%s';", + entryName, (NULL != excepDesc) ? excepDesc : "", m_sn.c_str()); ret = mysql_query(m_userMgr->m_sql, sqlCmd); if (0 != ret) { @@ -1567,101 +1412,144 @@ HGResult HGPdtToolDbDeviceImpl::SetEntryExcepDesc(HGUInt entryName, const HGChar return HGBASE_ERR_OK; } -HGResult HGPdtToolDbDeviceImpl::DownloadEntryImage(HGUInt entryName, const HGChar* ftpHost, HGUShort ftpPort, const HGChar* fileName) +HGResult HGPdtToolDbDeviceImpl::DownloadEntryImage(const HGChar* entryName, const HGChar* ftpHost, HGUShort ftpPort, HGUInt index, const HGChar* fileName) { if (NULL == m_userMgr->m_sql) { return HGBASE_ERR_FAIL; } + if (NULL == entryName || 0 == *entryName) + { + return HGBASE_ERR_INVALIDARG; + } + if (NULL == ftpHost || 0 == *ftpHost || NULL == fileName || 0 == *fileName) { return HGBASE_ERR_INVALIDARG; } - const HGChar* entryNameStr = GetEntryNameStr(entryName); - const HGChar* tableName = GetImageTableName(entryName); - if (NULL == entryNameStr || NULL == tableName) + HGUInt count = 0; + GetEntryImageCount(entryName, &count); + if (index >= count) { return HGBASE_ERR_INVALIDARG; } - std::string remotePath; - HGResult res = GetEntryImageRemotePath(tableName, entryNameStr, remotePath); - if (HGBASE_ERR_OK != res) - { - return res; - } - - if (remotePath.empty()) - { - return HGBASE_ERR_FAIL; - } - - return DownloadFile(ftpHost, ftpPort, remotePath.c_str(), fileName); + char remotePath[256]; + sprintf(remotePath, "/upload/%s/%s/%u.jpg", m_sn.c_str(), entryName, index); + return DownloadFile(ftpHost, ftpPort, remotePath, fileName); } -HGResult HGPdtToolDbDeviceImpl::CheckEntryImage(HGUInt entryName) +HGResult HGPdtToolDbDeviceImpl::GetEntryImageCount(const HGChar* entryName, HGUInt* count) { if (NULL == m_userMgr->m_sql) { return HGBASE_ERR_FAIL; } - const HGChar* entryNameStr = GetEntryNameStr(entryName); - const HGChar* tableName = GetImageTableName(entryName); - if (NULL == entryNameStr || NULL == tableName) + if (NULL == entryName || 0 == *entryName || NULL == count) { return HGBASE_ERR_INVALIDARG; } - std::string remotePath; - HGResult res = GetEntryImageRemotePath(tableName, entryNameStr, remotePath); - if (HGBASE_ERR_OK != res) - { - return res; - } - - if (remotePath.empty()) + char sqlCmd[1024] = { 0 }; + sprintf(sqlCmd, "select %s from inspection_image where sn = '%s';", entryName, m_sn.c_str()); + int ret = mysql_query(m_userMgr->m_sql, sqlCmd); + if (0 != ret) { return HGBASE_ERR_FAIL; } + MYSQL_RES* sqlRes = mysql_use_result(m_userMgr->m_sql); + if (NULL == sqlRes) + { + return HGBASE_ERR_FAIL; + } + + MYSQL_ROW row = mysql_fetch_row(sqlRes); + if (NULL == row) + { + mysql_free_result(sqlRes); + return HGBASE_ERR_FAIL; + } + + assert(NULL != row[0]); + *count = (HGUInt)atoll(row[0]); + mysql_free_result(sqlRes); return HGBASE_ERR_OK; } -HGResult HGPdtToolDbDeviceImpl::UploadEntryImage(HGUInt entryName, const HGChar* ftpHost, HGUShort ftpPort, const HGChar* fileName) +HGResult HGPdtToolDbDeviceImpl::ClearEntryImage(const HGChar* entryName) { if (NULL == m_userMgr->m_sql) { return HGBASE_ERR_FAIL; } + if (NULL == entryName || 0 == *entryName) + { + return HGBASE_ERR_INVALIDARG; + } + + char sqlCmd[1024] = { 0 }; + + // 事务开始 + int ret = mysql_query(m_userMgr->m_sql, "begin;"); + if (0 != ret) + { + return HGBASE_ERR_FAIL; + } + + sprintf(sqlCmd, "alter table inspection_image add column %s int unsigned default 0;", entryName); + mysql_query(m_userMgr->m_sql, sqlCmd); + + sprintf(sqlCmd, "update inspection_image set %s = 0 where sn = '%s';", entryName, m_sn.c_str()); + ret = mysql_query(m_userMgr->m_sql, sqlCmd); + if (0 != ret) + { + mysql_query(m_userMgr->m_sql, "rollback;"); + return HGBASE_ERR_FAIL; + } + + sprintf(sqlCmd, "update main_test set last_modify_time = now(), last_modify_user = '%s' where sn = '%s';", + m_userMgr->m_userName.c_str(), m_sn.c_str()); + ret = mysql_query(m_userMgr->m_sql, sqlCmd); + if (0 != ret) + { + mysql_query(m_userMgr->m_sql, "rollback;"); + return HGBASE_ERR_FAIL; + } + + // 事务结束 + ret = mysql_query(m_userMgr->m_sql, "commit;"); + assert(0 == ret); + return HGBASE_ERR_OK; +} + +HGResult HGPdtToolDbDeviceImpl::UploadEntryImage(const HGChar* entryName, const HGChar* ftpHost, HGUShort ftpPort, const HGChar* fileName) +{ + if (NULL == m_userMgr->m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == entryName || 0 == *entryName) + { + return HGBASE_ERR_INVALIDARG; + } + if (NULL == ftpHost || 0 == *ftpHost || NULL == fileName || 0 == *fileName) { return HGBASE_ERR_INVALIDARG; } - const HGChar* entryNameStr = GetEntryNameStr(entryName); - const HGChar* tableName = GetImageTableName(entryName); - if (NULL == entryNameStr || NULL == tableName) - { - return HGBASE_ERR_INVALIDARG; - } + HGUInt count = 0; + GetEntryImageCount(entryName, &count); - std::string remotePath; - HGResult res = GetEntryImageRemotePath(tableName, entryNameStr, remotePath); - if (HGBASE_ERR_OK != res) - { - return res; - } - - if (remotePath.empty()) - { - remotePath = std::string("/upload/") + m_sn + "/" + entryNameStr + ".jpg"; - } - - res = UploadFile(ftpHost, ftpPort, fileName, remotePath.c_str()); + char remotePath[256]; + sprintf(remotePath, "/upload/%s/%s/%u.jpg", m_sn.c_str(), entryName, count); + HGResult res = UploadFile(ftpHost, ftpPort, fileName, remotePath); if (HGBASE_ERR_OK != res) { return res; @@ -1676,8 +1564,10 @@ HGResult HGPdtToolDbDeviceImpl::UploadEntryImage(HGUInt entryName, const HGChar* return HGBASE_ERR_FAIL; } - sprintf(sqlCmd, "update %s set %s = '%s' where sn = '%s';", tableName, - entryNameStr, remotePath.c_str(), m_sn.c_str()); + sprintf(sqlCmd, "alter table inspection_image add column %s int unsigned default 0;", entryName); + mysql_query(m_userMgr->m_sql, sqlCmd); + + sprintf(sqlCmd, "update inspection_image set %s = %u where sn = '%s';", entryName, count + 1, m_sn.c_str()); ret = mysql_query(m_userMgr->m_sql, sqlCmd); if (0 != ret) { @@ -1774,84 +1664,6 @@ HGResult HGPdtToolDbDeviceImpl::SetProperty(const HGChar* prop, const HGChar* st return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; } -const HGChar* HGPdtToolDbDeviceImpl::GetEntryNameStr(HGUInt entryName) -{ - if (entryName >= HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH && entryName <= HGPDTTOOLDB_ENTRYNAME_SCANNING_SENSOR) - 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) - return PRESSURE_INSPECTION[entryName - HGPDTTOOLDB_ENTRYNAME_SINGLE_PAGE_TEST_1]; - return NULL; -} - -const HGChar* HGPdtToolDbDeviceImpl::GetTestTableName(HGUInt entryName) -{ - if (entryName >= HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH && entryName <= HGPDTTOOLDB_ENTRYNAME_SCANNING_SENSOR) - return "initial_inspection_test"; - else if (entryName >= HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE && entryName <= HGPDTTOOLDB_ENTRYNAME_MECH_PAPER_FEEDING_INCLINATION) - return "image_inspection_test"; - else if (entryName >= HGPDTTOOLDB_ENTRYNAME_SINGLE_PAGE_TEST_1 && entryName <= HGPDTTOOLDB_ENTRYNAME_CLEAR_ROLLER_COUNT) - return "pressure_inspection_test"; - return NULL; -} - -const HGChar* HGPdtToolDbDeviceImpl::GetDescTableName(HGUInt entryName) -{ - if (entryName >= HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH && entryName <= HGPDTTOOLDB_ENTRYNAME_SCANNING_SENSOR) - return "initial_inspection_desc"; - else if (entryName >= HGPDTTOOLDB_ENTRYNAME_CONFIGURE_SPEED_MODE && entryName <= HGPDTTOOLDB_ENTRYNAME_MECH_PAPER_FEEDING_INCLINATION) - return "image_inspection_desc"; - else if (entryName >= HGPDTTOOLDB_ENTRYNAME_SINGLE_PAGE_TEST_1 && entryName <= HGPDTTOOLDB_ENTRYNAME_CLEAR_ROLLER_COUNT) - return "pressure_inspection_desc"; - return NULL; -} - -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 != tableName && 0 != *tableName); - assert(NULL != entryNameStr && 0 != *entryNameStr); - remotePath.clear(); - - char sqlCmd[1024] = { 0 }; - 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) - { - return HGBASE_ERR_FAIL; - } - - MYSQL_RES* sqlRes = mysql_use_result(m_userMgr->m_sql); - if (NULL == sqlRes) - { - return HGBASE_ERR_FAIL; - } - - MYSQL_ROW row = mysql_fetch_row(sqlRes); - if (NULL == row) - { - mysql_free_result(sqlRes); - return HGBASE_ERR_FAIL; - } - - if (NULL != row[0]) - remotePath = row[0]; - mysql_free_result(sqlRes); - return HGBASE_ERR_OK; -} - static size_t read_callback(char* ptr, size_t size, size_t nmemb, void* stream) { return fread(ptr, size, nmemb, (FILE*)stream); diff --git a/db/HGPdtToolDb/HGPdtToolDbImpl.hpp b/db/HGPdtToolDb/HGPdtToolDbImpl.hpp index ff21958..d9517ad 100644 --- a/db/HGPdtToolDb/HGPdtToolDbImpl.hpp +++ b/db/HGPdtToolDb/HGPdtToolDbImpl.hpp @@ -36,6 +36,8 @@ public: HGResult Export(const HGChar* xlsPath); HGResult GetConfig(const HGChar *key, HGChar *value, HGUInt maxLen); HGResult SetConfig(const HGChar* key, const HGChar *value); + HGResult GetEntryNameCnStr(const HGChar* entryName, HGChar* entryNameCnStr, HGUInt maxLen); + HGResult SetEntryNameCnStr(const HGChar* entryName, const HGChar* entryNameCnStr); HGResult OpenDevice(const HGChar* sn, class HGPdtToolDbDeviceImpl **deviceImpl); private: @@ -45,24 +47,14 @@ private: static int GetConnectId(MYSQL* sql); static int SetUserLoginInfo(MYSQL* sql, const HGChar* userName, int connectId, const std::string& takeUserName); static int GetUserLoginInfo(MYSQL* sql, const HGChar* userName, int &connectId, std::string &takeUserName); + static HGUInt GetCols(MYSQL* sql, const HGChar *tableName, std::list &cols); int CreateFileTable(MYSQL* sql); + int CreateEntryNameCnStrTable(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 CreatePreInspImageTable(MYSQL* sql); - + int CreateInspectionTable(MYSQL* sql, const HGChar* tableName); int InitMainTestItem(const HGChar *sn); - int InitInspTestItem(const HGChar* tableName, const HGChar* sn); + int InitInspectionItem(const HGChar* tableName, const HGChar* sn); private: MYSQL* m_sql; @@ -84,25 +76,19 @@ public: HGResult SetType(const HGChar* type); HGResult GetVersion(HGChar* version, HGUInt maxLen); HGResult SetVersion(const HGChar* version); - HGResult GetCurrEntry(HGUInt* entryName); - HGResult SetCurrEntry(HGUInt entryName); - HGResult GetEntryStatus(HGUInt entryName, HGUInt* entryStatus); - HGResult SetEntryStatus(HGUInt entryName, HGUInt entryStatus); - HGResult GetEntryExcepDesc(HGUInt entryName, HGChar* excepDesc, HGUInt maxLen); - HGResult SetEntryExcepDesc(HGUInt entryName, const HGChar* excepDesc); - HGResult DownloadEntryImage(HGUInt entryName, const HGChar *ftpHost, HGUShort ftpPort, const HGChar* fileName); - HGResult CheckEntryImage(HGUInt entryName); - HGResult UploadEntryImage(HGUInt entryName, const HGChar* ftpHost, HGUShort ftpPort, const HGChar *fileName); + HGResult GetEntryStatus(const HGChar* entryName, HGUInt* entryStatus); + HGResult SetEntryStatus(const HGChar* entryName, HGUInt entryStatus); + HGResult GetEntryExcepDesc(const HGChar* entryName, HGChar* excepDesc, HGUInt maxLen); + HGResult SetEntryExcepDesc(const HGChar* entryName, const HGChar* excepDesc); + HGResult DownloadEntryImage(const HGChar* entryName, const HGChar *ftpHost, HGUShort ftpPort, HGUInt index, const HGChar* fileName); + HGResult GetEntryImageCount(const HGChar* entryName, HGUInt *count); + HGResult ClearEntryImage(const HGChar* entryName); + HGResult UploadEntryImage(const HGChar* entryName, const HGChar* ftpHost, HGUShort ftpPort, const HGChar *fileName); private: HGResult GetProperty(const HGChar *prop, HGChar* str, HGUInt maxLen); HGResult SetProperty(const HGChar* prop, const HGChar* str); - const HGChar* GetEntryNameStr(HGUInt entryName); - const HGChar* GetTestTableName(HGUInt entryName); - const HGChar* GetDescTableName(HGUInt entryName); - const HGChar* GetImageTableName(HGUInt entryName); - HGResult GetEntryImageRemotePath(const HGChar *tableName, const HGChar *entryNameStr, std::string &remotePath); private: // FTP diff --git a/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp b/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp index ee3f809..3152eb9 100644 --- a/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp +++ b/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp @@ -1,6 +1,21 @@ #include "base/HGDef.h" #include "base/HGInc.h" #include "../HGPdtToolDb/HGPdtToolDb.h" +#include + +static std::string AnsiToUtf8(const char* text) +{ + int wlen = ::MultiByteToWideChar(CP_ACP, 0, text, -1, NULL, 0); + WCHAR* pUnicode = new WCHAR[wlen]; + ::MultiByteToWideChar(CP_ACP, 0, text, -1, pUnicode, wlen); + int len = ::WideCharToMultiByte(CP_UTF8, 0, pUnicode, -1, NULL, 0, NULL, NULL); + CHAR* pUTF8 = new CHAR[len]; + ::WideCharToMultiByte(CP_UTF8, 0, pUnicode, -1, pUTF8, len, NULL, NULL); + delete[] pUnicode; + std::string ret = pUTF8; + delete[] pUTF8; + return ret; +} int main() { @@ -11,10 +26,14 @@ int main() //HGPdtToolDb_UploadFile(userMgr, "G100", "D:\\config.json"); //HGPdtToolDb_DownloadFile(userMgr, "G100", "D:\\123.txt"); + std::string str = AnsiToUtf8("图像质量"); + HGPdtToolDb_SetEntryNameCnStr(userMgr, "image_quality", str.c_str()); + HGPdtToolDbDevice device = NULL; HGPdtToolDb_OpenDevice(userMgr, "G654321", &device); - HGPdtToolDb_UploadDeviceEntryImage(device, HGPDTTOOLDB_ENTRYNAME_IMAGE_QUALITY, "192.168.1.70", 21, "D:\\1.jpg"); - HGPdtToolDb_DownloadDeviceEntryImage(device, HGPDTTOOLDB_ENTRYNAME_IMAGE_QUALITY, "192.168.1.70", 21, "D:\\22.jpg"); + HGPdtToolDb_SetDeviceEntryStatus(device, "image_quality", 1); + HGPdtToolDb_UploadDeviceEntryImage(device, "image_quality", "192.168.1.70", 21, "D:\\1.jpg"); + HGPdtToolDb_DownloadDeviceEntryImage(device, "image_quality", "192.168.1.70", 21, 0, "D:\\22.jpg"); //HGPdtToolDb_CloseDevice(device); HGPdtToolDb_Export(userMgr, "D:\\1.xls");