提交信息!
This commit is contained in:
		@@ -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 )
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user