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 aa428a0..b3a7141 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 @@ -10,11 +10,240 @@ 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 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"其他保险公司新车签单台次" }; +const wchar_t * pwszAchievement[] = { + L"年度", + L"月份", + L"车商代码", + L"车商名称", + L"店内双签产值(万元)", + L"店内新车开票数", + L"我司新车签单台次", + L"人保新车签单台次", + L"平安新车签单台次", + L"其他保险公司新车签单台次", +}; + +//送返修工单 +const unsigned int REPAIR_ORDER_CAPTION_COUNT = 25; +const wchar_t * pwszRepairOrderCaption[] = { + L"分公司名称", + L"工单号", + L"工单类型", + L"报案号", + L"出险区域", + L"出险日期", + L"创建日期", + L"商业险保单号", + L"交强险保单号", + L"车牌号", + L"品牌名称", + L"是否标的车", + L"是否推荐成功", + L"推荐车商代码", + L"推荐车商名称", + L"报案推荐车商名称", + L"查勘推荐车商名称", + L"接报案人", + L"查勘员", + L"工单确认时间", + L"车辆进厂时间", + L"车辆出厂时间", + L"状态", + L"损失项目ID", + L"查勘员推荐状态", +}; + +//卢霖城-送返修推荐表 +const unsigned int REPAIR_RECOMMANDATION_CAPTION_COUNT = 11; +const wchar_t * pwszRepairRecommandationCaption[] = { + L"工单号", + L"工单类型", + L"报案号", + L"推荐车商代码", + L"推荐车商名称", + L"出险日期", + L"车牌号", + L"品牌名称", + L"短信类型", + L"发送时间", + L"数据来源", +}; + +//新送返修推荐报表 +const unsigned int NEW_REPAIR_MONITOR_CAPTION_COUNT = 157; +const wchar_t * pwszNewRepairMonitorCaption[] = { + L"分公司名称", + L"部门组名称", + L"报案号", + L"报案日期", + L"出险日期", + L"出险地点", + L"事故车目前位置", + L"车损序号", + L"车牌", + L"vin码", + L"车龄", + L"品牌代码", + L"品牌名称", + L"车系名称", + L"使用性质名称", + L"保单号", + L"标的车/三者车", + L"是否9座以下企业用车、行政用车、家庭自用车", + L"核价金额", + L"核损配件核损金额", + L"核损工时费核损金额", + L"核损辅料核损金额", + L"核损外修费核损金额", + L"核损施救费核损金额", + L"结案金额", + L"结案配件核损金额", + L"结案工时费核损金额", + L"结案辅料核损金额", + L"结案外修费核损金额", + L"结案施救费核损金额", + L"接报案人分公司名称", + L"接报案人工号", + L"接报案人名称", + L"第一任务分派时间", + L"第一定损员分公司", + L"第一定损员部门组名称", + L"第一定损员代码", + L"第一定损员名称", + L"第一车商是否已阅读", + L"第一车上是否预约进厂", + L"第一车商是否推荐失败", + L"第一车商是否进厂确认", + L"第一车商是否出场确认", + L"第二任务分派时间", + L"第二定损员分公司", + L"第二定损员部门组名称", + L"第二定损员代码", + L"第二定损员名称", + L"第二车商是否已阅读", + L"第二车上是否预约进厂", + L"第二车商是否推荐失败", + L"第二车商是否进厂确认", + L"第二车商是否出场确认", + L"第三任务分派时间", + L"第三定损员分公司", + L"第三定损员部门组名称", + L"第三定损员代码", + L"第三定损员名称", + L"第三车商是否已阅读", + L"第三车上是否预约进厂", + L"第三车商是否推荐失败", + L"第三车商是否进厂确认", + L"第三车商是否出场确认", + L"其他查勘员信息", + L"是否推荐", + L"是否存在工单", + L"工单类型", + L"查勘员操作类型", + L"案件状态名称", + L"车辆状态名称--当前状态", + L"车辆状态名称--报案环节", + L"车辆状态名称--现场推荐环节", + L"车辆状态名称--核价通过环节", + L"车辆状态名称--结案环节", + L"承保车商代码", + L"承保车商名称", + L"报案车商分公司名称", + L"报案车商部门组名称", + L"报案车商代码", + L"报案车商名称", + L"现场推荐车商分公司名称", + L"现场推荐车商代码", + L"现场推荐车商名称", + L"核价车商分公司名称", + L"核价车商部门组名称", + L"核价车商代码", + L"核价车商名称", + L"推荐车商与核价车商是否一致", + L"核价修理厂归属公司代码", + L"核价修理厂归属公司名称", + L"核价修理厂", + L"核价修理厂名称", + L"估损单号", + L"核价通过时间", + L"定损员机构", + L"定损员代码", + L"定损员名称", + L"结案车商分公司", + L"结案车商部门组名称", + L"结案车商代码", + L"结案车商名称", + L"推荐车商与结案车商是否一致", + L"结案修理厂归属公司代码", + L"结案修理厂归属公司名称", + L"结案修理厂代码", + L"结案修理厂名称", + L"车辆进厂时间", + L"车辆出厂时间", + L"结案时间", + L"事故经过", + L"数据更新日期", + L"备注", + L"估损单模板", + L"返修开关(报案)", + L"送修开关(报案)", + L"返修开关(核价)", + L"送修开关(核价)", + L"返修开关(结案)", + L"送修开关(结案)", + L"查勘员分公司名称", + L"查勘员代码", + L"查勘员名称", + L"核价修理厂归属中支", + L"结案修理厂归属中支", + L"是否诉讼", + L"座席推荐分公司代码", + L"座席推荐分公司名称", + L"座席推荐车商名代码", + L"座席推荐车商名称", + L"座席推荐操作类型", + L"座席推荐排名", + L"第一次推荐分公司代码 ", + L"第一次推荐分公司名称", + L"第一次推荐车商代码", + L"第一次推荐车商名称", + L"第一次推荐工具(APP、M6)", + L"第一次推荐操作类型", + L"第一次推荐排名、其他推荐信息", + L"第二次推荐分公司代码", + L"第二次推荐分公司名称", + L"第二次推荐车商代码", + L"第二次推荐车商名称", + L"第二次推荐工具(APP、M6)", + L"第二次推荐操作类型", + L"第二次推荐排名、其他推荐信息", + L"第三次推荐分公司代码 ", + L"第三次推荐分公司名称", + L"第三次推荐车商代码", + L"第三次推荐车商名称", + L"第三次推荐工具(APP、M6)", + L"第三次推荐操作类型", + L"第三次推荐排名、其他推荐信息", + L"其他推荐信息", + L"推荐失败具体原因", + L"是否现场报案", + L"报案地点", + L"是否在厂报案", +}; /************************************************ * \brief @@ -60,7 +289,11 @@ void LoadCarDealerSchemeFromXlsx( const wstring & filePath, } //验证表格内容是否相符 - bool isEqual = checkExcelFileFormat( pBook, sheetIndex, startRowIndex - 1, pwszSchema, CARDEALER_SCHEMA_CAPTION_COUNT ); + bool isEqual = checkExcelFileFormat( pBook, + sheetIndex, + startRowIndex - 1, + pwszSchema, + CARDEALER_SCHEMA_CAPTION_COUNT ); if ( isEqual == false ) { @@ -168,16 +401,16 @@ void LoadCarDealerAchievementFromXlsx( const std::wstring & fileP } //验证表格内容是否相符 - bool isEqual = checkExcelFileFormat(pBook, sheetIndex, startRowIndex - 1, pwszAchievement, CARDEALER_ACHIEVEMENT_CAPTION_COUNT); + bool isEqual = checkExcelFileFormat( pBook, sheetIndex, startRowIndex - 1, pwszAchievement, CARDEALER_ACHIEVEMENT_CAPTION_COUNT ); - if (isEqual == false) + if ( isEqual == false ) { //内容不相符,抛出异常 string errorMessage = "Excel文件内容不符!\n请核对后再导入!"; pBook->release(); - throw runtime_error(errorMessage); + throw runtime_error( errorMessage ); } pSheet = pBook->getSheet( sheetIndex ); @@ -204,16 +437,16 @@ void LoadCarDealerAchievementFromXlsx( const std::wstring & fileP { int colunmIndex = firstRowIndex; - 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 && 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 ); - long double checkedAchievement = 0; - int policyAmount = 0; - int cpicAmount = 0; - int piccAmount = 0; - int pinganAmount = 0; - int othersAmount = 0; + long double checkedAchievement = 0; + int policyAmount = 0; + int cpicAmount = 0; + int piccAmount = 0; + int pinganAmount = 0; + int othersAmount = 0; //空行跳过 if ( carDealerCode.empty() == true ) @@ -377,6 +610,23 @@ void LoadRepairOrderFromXlsx( const std::wstring & filePath, throw runtime_error( errorMessage ); } + //验证表格内容是否相符 + bool isEqual = checkExcelFileFormat( pBook, + sheetIndex, + startRowIndex - 1, + pwszRepairOrderCaption, + REPAIR_ORDER_CAPTION_COUNT ); + + if ( isEqual == false ) + { + //内容不相符,抛出异常 + string errorMessage = "Excel文件内容不符!\n请核对后再导入!"; + + pBook->release(); + + throw runtime_error( errorMessage ); + } + pSheet = pBook->getSheet( sheetIndex ); if ( pSheet == nullptr ) @@ -493,6 +743,23 @@ void LoadRepairRecommandationFromXlsx( const std::wstring & setKey( pBook ); + //验证表格内容是否相符 + bool isEqual = checkExcelFileFormat( pBook, + sheetIndex, + startRowIndex - 1, + pwszRepairRecommandationCaption, + REPAIR_RECOMMANDATION_CAPTION_COUNT ); + + if ( isEqual == false ) + { + //内容不相符,抛出异常 + string errorMessage = "Excel文件内容不符!\n请核对后再导入!"; + + pBook->release(); + + throw runtime_error( errorMessage ); + } + pSheet = pBook->getSheet( sheetIndex ); if ( pSheet == nullptr ) @@ -569,6 +836,23 @@ void LoadNewRepairMonitorReportFromXlsx( const std::wstring & throw runtime_error( errorMessage ); } + //验证表格内容是否相符 + bool isEqual = checkExcelFileFormat( pBook, + sheetIndex, + startRowIndex - 1, + pwszNewRepairMonitorCaption, + NEW_REPAIR_MONITOR_CAPTION_COUNT ); + + if ( isEqual == false ) + { + //内容不相符,抛出异常 + string errorMessage = "Excel文件内容不符!\n请核对后再导入!"; + + pBook->release(); + + throw runtime_error( errorMessage ); + } + pSheet = pBook->getSheet( sheetIndex ); if ( pSheet == nullptr )