diff --git a/code/cpp/car_dealer_util/proj/vs2019/car_dealer_util/source/qrc_resource.cpp b/code/cpp/car_dealer_util/proj/vs2019/car_dealer_util/source/qrc_resource.cpp index 277dd1a..6970912 100644 --- a/code/cpp/car_dealer_util/proj/vs2019/car_dealer_util/source/qrc_resource.cpp +++ b/code/cpp/car_dealer_util/proj/vs2019/car_dealer_util/source/qrc_resource.cpp @@ -36909,94 +36909,94 @@ static const unsigned char qt_resource_struct[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/QMainFrame/Resources/8218_box1.png 0x0,0x0,0x1,0x2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x3f,0xef, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x6a, +0x0,0x0,0x1,0x76,0x41,0xcb,0xdd,0xfa, // :/QMainFrame/Resources/find.png 0x0,0x0,0x1,0x22,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0xaa,0x5f, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x75, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x4, // :/QMainFrame/Resources/print.png 0x0,0x0,0x1,0x62,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2,0x47,0x63, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x7c, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x8, // :/QMainFrame/Resources/option.png 0x0,0x0,0x2,0x94,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x6,0xb8, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x7b, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x7, // :/QMainFrame/Resources/x.png 0x0,0x0,0x2,0x2c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x5,0x6a,0x2d, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x80, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0xb, // :/QMainFrame/Resources/telephone.png 0x0,0x0,0x2,0xc4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xb2,0x8, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x7e, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0xa, // :/QMainFrame/Resources/plus.png 0x0,0x0,0x2,0x52,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x6,0x5d,0x5f, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x7b, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x7, // :/QMainFrame/Resources/20121016085311441_easyicon_cn_128.png 0x0,0x0,0x0,0x82,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x77,0x17, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x69, +0x0,0x0,0x1,0x76,0x41,0xcb,0xdd,0xf9, // :/QMainFrame/Resources/new.png 0x0,0x0,0x2,0xe4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xcc,0x61, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x7a, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x6, // :/QMainFrame/Resources/CPIC.png 0x0,0x0,0x2,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x5,0xc9,0x50, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x6c, +0x0,0x0,0x1,0x76,0x41,0xcb,0xdd,0xfc, // :/QMainFrame/Resources/ok.png 0x0,0x0,0x1,0x38,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0xe8,0x27, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x7a, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x7, // :/QMainFrame/Resources/face.png 0x0,0x0,0x1,0xc8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4,0x29,0xa6, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x75, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x3, // :/QMainFrame/Resources/CNY_Red.png 0x0,0x0,0x1,0xf8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4,0xfc,0xe0, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x6b, +0x0,0x0,0x1,0x76,0x41,0xcb,0xdd,0xfb, // :/QMainFrame/Resources/car2.png 0x0,0x0,0x3,0x10,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x69,0x71, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x71, +0x0,0x0,0x1,0x76,0x41,0xcb,0xdd,0xff, // :/QMainFrame/Resources/app.ico 0x0,0x0,0x0,0x46,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x2,0x22, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x6f, +0x0,0x0,0x1,0x76,0x41,0xcb,0xdd,0xfe, // :/QMainFrame/Resources/save.png 0x0,0x0,0x2,0x7e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x6,0xcf,0x1, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x7d, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x9, // :/QMainFrame/Resources/car.png 0x0,0x0,0x0,0x5a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1f,0x7e, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x70, +0x0,0x0,0x1,0x76,0x41,0xcb,0xdd,0xfe, // :/QMainFrame/Resources/cat.png 0x0,0x0,0x0,0x6e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x55,0x58, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x72, +0x0,0x0,0x1,0x76,0x41,0xcb,0xdd,0xff, // :/QMainFrame/Resources/excel.png 0x0,0x0,0x2,0x14,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x5,0x51,0x43, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x74, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x2, // :/QMainFrame/Resources/CPIC??.png 0x0,0x0,0x1,0x7a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2,0x9e,0xab, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x6d, +0x0,0x0,0x1,0x76,0x41,0xcb,0xdd,0xfd, // :/QMainFrame/Resources/dec.png 0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x73, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x0, // :/QMainFrame/Resources/folder.png 0x0,0x0,0x0,0xd2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xcc,0x2a, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x76, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x4, // :/QMainFrame/Resources/edit.png 0x0,0x0,0x2,0x68,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x6,0x61,0x1b, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x74, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x1, // :/QMainFrame/Resources/clean.png 0x0,0x0,0x2,0xf8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x3a,0x47, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x73, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x0, // :/QMainFrame/Resources/gear.png 0x0,0x0,0x2,0xae,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x5c,0x60, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x78, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x5, // :/QMainFrame/Resources/quit.png 0x0,0x0,0x0,0xec,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xe0,0xcc, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x7c, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x8, // :/QMainFrame/Resources/save2.png 0x0,0x0,0x1,0x4a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2,0x29,0x5d, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x7e, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x9, // :/QMainFrame/Resources/manager.png 0x0,0x0,0x1,0x94,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0x55,0x8f, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x79, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x6, // :/QMainFrame/Resources/login.png 0x0,0x0,0x1,0xb0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0xb9,0xe4, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x79, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0x5, // :/QMainFrame/Resources/tongji.png 0x0,0x0,0x1,0xde,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x4,0x8a,0x1, -0x0,0x0,0x1,0x72,0x96,0xa9,0x44,0x7f, +0x0,0x0,0x1,0x76,0x41,0xcb,0xde,0xa, }; diff --git a/code/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.cpp b/code/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.cpp index c036a74..aa428a0 100644 --- a/code/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.cpp +++ b/code/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.cpp @@ -8,6 +8,28 @@ using namespace std; using namespace libxl; +//车商方案表 +const unsigned int CARDEALER_SCHEMA_CAPTION_COUNT = 9; +const wchar_t * pwszSchema[] = {L"年度", L"月份", L"车商代码", L"车商名称", L"工时标准", L"配件价格", L"其他理赔支持", L"营销活动方案", L"是否达成预期"}; + +//车商业绩表 +const unsigned int CARDEALER_ACHIEVEMENT_CAPTION_COUNT = 10; +const wchar_t* pwszAchievement[] = { L"年度", L"月份", L"车商代码", L"车商名称", L"店内双签产值(万元)", L"店内新车开票数", L"我司新车签单台次", L"人保新车签单台次", L"平安新车签单台次", L"其他保险公司新车签单台次" }; + +/************************************************ +* \brief +* \param pBook +* \param sheetIndex +* \param captionRowIndex +* \param pszCaptionFormat +* \param captionCount +* \return +************************************************/ +bool checkExcelFileFormat( Book * pBook, + int sheetIndex, + int captionRowIndex, + const wchar_t * pszCaptionFormat[], + int captionCount ); /************************************************ * \brief 从Excel文件读取车商方案表 @@ -37,6 +59,19 @@ void LoadCarDealerSchemeFromXlsx( const wstring & filePath, throw runtime_error( errorMessage ); } + //验证表格内容是否相符 + bool isEqual = checkExcelFileFormat( pBook, sheetIndex, startRowIndex - 1, pwszSchema, CARDEALER_SCHEMA_CAPTION_COUNT ); + + if ( isEqual == false ) + { + //内容不相符,抛出异常 + string errorMessage = "Excel文件内容不符!\n请核对后再导入!"; + + pBook->release(); + + throw runtime_error( errorMessage ); + } + pSheet = pBook->getSheet( sheetIndex ); if ( pSheet == nullptr ) @@ -54,7 +89,7 @@ void LoadCarDealerSchemeFromXlsx( const wstring & filePath, int firstColumnIndex = pSheet->firstCol(); int rowIndex = firstRowIndex + startRowIndex; - //车商名称表 + //车商名称表,用于验证表格中的车商代码 auto * pCarDealerMap = GetCarDealerMap(); while ( rowIndex <= lastRowIndex ) @@ -132,6 +167,19 @@ void LoadCarDealerAchievementFromXlsx( const std::wstring & fileP throw runtime_error( errorMessage ); } + //验证表格内容是否相符 + bool isEqual = checkExcelFileFormat(pBook, sheetIndex, startRowIndex - 1, pwszAchievement, CARDEALER_ACHIEVEMENT_CAPTION_COUNT); + + if (isEqual == false) + { + //内容不相符,抛出异常 + string errorMessage = "Excel文件内容不符!\n请核对后再导入!"; + + pBook->release(); + + throw runtime_error(errorMessage); + } + pSheet = pBook->getSheet( sheetIndex ); if ( pSheet == nullptr ) @@ -149,6 +197,7 @@ void LoadCarDealerAchievementFromXlsx( const std::wstring & fileP int firstColumnIndex = pSheet->firstCol(); int rowIndex = firstRowIndex + startRowIndex; + //车商名称表 unordered_map * pCarDealerMap = GetCarDealerMap(); while ( rowIndex <= lastRowIndex ) @@ -158,7 +207,7 @@ void LoadCarDealerAchievementFromXlsx( const std::wstring & fileP const wstring && theYear = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex, true ); const wstring && theMonth = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 1, true ); const wstring && carDealerCode = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 2, true ); - const wstring && carDealerName = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 3, true ); + //const wstring && carDealerName = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex + 3, true ); long double checkedAchievement = 0; int policyAmount = 0; int cpicAmount = 0; @@ -366,7 +415,7 @@ void LoadRepairOrderFromXlsx( const std::wstring & filePath, const wstring && isSuccess = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); const wstring && recommandDealerCode = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); const wstring && recommandDealerName = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); - const wstring && recommandDealerCodeInNotify = L""; // ReadCellStringFromXlsx(pBook, sheetIndex, rowIndex, colunmIndex, true); + const wstring && recommandDealerCodeInNotify = L""; //表格中没有报案推荐车商代码 const wstring && recommandDealerNameInNotify = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); const wstring && recommandDealerNameInSurvey = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); const wstring && agentName = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); @@ -726,18 +775,35 @@ void LoadNewRepairMonitorReportFromXlsx( const std::wstring & * \param pszCaptionFormat * \return ************************************************/ -bool checkExcelFileFormat( Book * pBook, int sheetIndex, int captionRowIndex, wchar_t * pszCaptionFormat[], int captionCount ) +bool checkExcelFileFormat( Book * pBook, int sheetIndex, int captionRowIndex, const wchar_t * pszCaptionFormat[], int captionCount ) { if ( pBook == nullptr ) { throw logic_error( "Excel文件指针为空!" ); } + if ( sheetIndex < 0 || captionRowIndex < 0 ) + { + throw logic_error( "标题行参数错误!" ); + } + Sheet * pSheet = pBook->getSheet( sheetIndex ); int captionIndex = 0; + bool isEqual = true; while ( captionIndex < captionCount ) { - + const wchar_t * pwszCaption = pSheet->readStr( captionRowIndex, captionIndex ); + + if ( wcscmp( pwszCaption, pszCaptionFormat[captionIndex] ) != 0 ) + { + isEqual = false; + + break; + } + + captionIndex++; } + + return isEqual; } diff --git a/code/cpp/car_dealer_util/source/Widgets/ContentWidget/QCarDealerAchievementWidget/QCarDealerAchievementWidget.cpp b/code/cpp/car_dealer_util/source/Widgets/ContentWidget/QCarDealerAchievementWidget/QCarDealerAchievementWidget.cpp index e224750..5f1f61e 100644 --- a/code/cpp/car_dealer_util/source/Widgets/ContentWidget/QCarDealerAchievementWidget/QCarDealerAchievementWidget.cpp +++ b/code/cpp/car_dealer_util/source/Widgets/ContentWidget/QCarDealerAchievementWidget/QCarDealerAchievementWidget.cpp @@ -1,11 +1,8 @@ #include -#include "QCarDealerAchievementWidget.h" - - #include #include - - +#include "QCarDealerAchievementWidget.h" +#include "../../Data/Datastructure/CarDealer/CarDealerMap.h" #include "../../../data/DataManipulation/oracle/ImportToOracle.h" #include "../../Data/DataManipulation/Excel/LoadFromExcel.h" #include "../../../util/qt/qt_util.h" @@ -98,6 +95,8 @@ void QCarDealerAchievementWidget::showCarDealerAchievement() ui.pTableWidgetAchievement->setItem( rowIndex, columnIndex++, pItem ); //车商名称 + QString carDealerName = QString::fromStdWString(GetCarDealerName(iter->getCarDealerCode())); + pItem = new QTableWidgetItem( QString::fromStdWString( iter->getCarDealerCode() ) ); pItem->setTextAlignment( Qt::AlignVCenter | Qt::AlignHCenter );