From 95f8839446c6b5dac1bd8522c46a9d4b298db924 Mon Sep 17 00:00:00 2001 From: Kane Wang Date: Tue, 7 Jul 2020 15:13:22 +0800 Subject: [PATCH] ... --- .../car_dealer_util/car_dealer_util.vcxproj | 2 + .../car_dealer_util.vcxproj.filters | 9 + .../moc_QCarDealerAchievementWidget.cpp | 74 +++--- .../DataManipulation/Excel/LoadFromExcel.cpp | 219 +++++++++++++++++- .../DataManipulation/Excel/LoadFromExcel.h | 14 ++ .../oracle/ImportToOracle.cpp | 206 +++++++++++++++- .../DataManipulation/oracle/ImportToOracle.h | 6 + .../新送返修监控报表.cpp | 3 + .../新送返修监控报表.h | 165 +++++++++++++ .../cpp/car_dealer_util/source/test/test.cpp | 15 +- 数据/卢霖城 - 推荐表 - 副本.xlsx | Bin 0 -> 61608 bytes 数据/新送返修监控报表 - 字段.xlsx | Bin 15049 -> 15104 bytes 12 files changed, 665 insertions(+), 48 deletions(-) create mode 100644 代码/cpp/car_dealer_util/source/Data/Datastructure/新送返修监控报表/新送返修监控报表.cpp create mode 100644 代码/cpp/car_dealer_util/source/Data/Datastructure/新送返修监控报表/新送返修监控报表.h create mode 100644 数据/卢霖城 - 推荐表 - 副本.xlsx diff --git a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj index 4579faa..ee80c15 100644 --- a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj +++ b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj @@ -27,6 +27,7 @@ + @@ -65,6 +66,7 @@ + diff --git a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters index 97b2a14..2c54a43 100644 --- a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters +++ b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/car_dealer_util.vcxproj.filters @@ -104,6 +104,9 @@ {21e75150-0798-4087-8cc8-8bcad02c0694} + + {8d1f7b99-d4bb-406c-a9f3-1e0256517982} + @@ -172,6 +175,9 @@ 数据\数据结构\送返修推荐表 + + 数据\数据结构\新送返修监控报表 + @@ -274,5 +280,8 @@ 数据\数据结构\送返修推荐表 + + 数据\数据结构\新送返修监控报表 + \ No newline at end of file diff --git a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/source/Widgets/ContentWidget/QCarDealerAchievementWidget/moc_QCarDealerAchievementWidget.cpp b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/source/Widgets/ContentWidget/QCarDealerAchievementWidget/moc_QCarDealerAchievementWidget.cpp index adc31ed..b806c34 100644 --- a/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/source/Widgets/ContentWidget/QCarDealerAchievementWidget/moc_QCarDealerAchievementWidget.cpp +++ b/代码/cpp/car_dealer_util/proj/vs2019/car_dealer_util/source/Widgets/ContentWidget/QCarDealerAchievementWidget/moc_QCarDealerAchievementWidget.cpp @@ -22,8 +22,8 @@ QT_BEGIN_MOC_NAMESPACE QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED struct qt_meta_stringdata_QCarDealerAchievementWidget_t { - QByteArrayData data[1]; - char stringdata0[28]; + QByteArrayData data[1]; + char stringdata0[28]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ @@ -31,65 +31,65 @@ struct qt_meta_stringdata_QCarDealerAchievementWidget_t { - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_QCarDealerAchievementWidget_t qt_meta_stringdata_QCarDealerAchievementWidget = { - { + { QT_MOC_LITERAL(0, 0, 27) // "QCarDealerAchievementWidget" - }, - "QCarDealerAchievementWidget" + }, + "QCarDealerAchievementWidget" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_QCarDealerAchievementWidget[] = { - // content: - 8, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - 0, 0, // constructors - 0, // flags - 0, // signalCount + // content: + 8, // revision + 0, // classname + 0, 0, // classinfo + 0, 0, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount - 0 // eod + 0 // eod }; -void QCarDealerAchievementWidget::qt_static_metacall(QObject* _o, QMetaObject::Call _c, int _id, void** _a) +void QCarDealerAchievementWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { - Q_UNUSED(_o); - Q_UNUSED(_id); - Q_UNUSED(_c); - Q_UNUSED(_a); + Q_UNUSED(_o); + Q_UNUSED(_id); + Q_UNUSED(_c); + Q_UNUSED(_a); } QT_INIT_METAOBJECT const QMetaObject QCarDealerAchievementWidget::staticMetaObject = { { - &QWidget::staticMetaObject, - qt_meta_stringdata_QCarDealerAchievementWidget.data, - qt_meta_data_QCarDealerAchievementWidget, - qt_static_metacall, - nullptr, - nullptr + &QWidget::staticMetaObject, + qt_meta_stringdata_QCarDealerAchievementWidget.data, + qt_meta_data_QCarDealerAchievementWidget, + qt_static_metacall, + nullptr, + nullptr } }; -const QMetaObject* QCarDealerAchievementWidget::metaObject() const +const QMetaObject *QCarDealerAchievementWidget::metaObject() const { - return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; + return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } -void* QCarDealerAchievementWidget::qt_metacast(const char* _clname) +void *QCarDealerAchievementWidget::qt_metacast(const char *_clname) { - if (!_clname) return nullptr; - if (!strcmp(_clname, qt_meta_stringdata_QCarDealerAchievementWidget.stringdata0)) - return static_cast(this); - return QWidget::qt_metacast(_clname); + if (!_clname) return nullptr; + if (!strcmp(_clname, qt_meta_stringdata_QCarDealerAchievementWidget.stringdata0)) + return static_cast(this); + return QWidget::qt_metacast(_clname); } -int QCarDealerAchievementWidget::qt_metacall(QMetaObject::Call _c, int _id, void** _a) +int QCarDealerAchievementWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { - _id = QWidget::qt_metacall(_c, _id, _a); - return _id; + _id = QWidget::qt_metacall(_c, _id, _a); + return _id; } QT_WARNING_POP QT_END_MOC_NAMESPACE diff --git a/代码/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.cpp b/代码/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.cpp index 366cd2c..adc92d1 100644 --- a/代码/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.cpp +++ b/代码/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.cpp @@ -397,16 +397,16 @@ void LoadRepairSuggestionFromXlsx( const std::wstring & filePat throw runtime_error( "libxl库加载失败!" ); } - if (pBook->load(filePath.c_str()) != true) + if ( pBook->load( filePath.c_str() ) != true ) { string errorMessage = "打开文件失败!"; - errorMessage.append(pBook->errorMessage()); + errorMessage.append( pBook->errorMessage() ); - throw runtime_error(errorMessage); + throw runtime_error( errorMessage ); } setKey( pBook ); - + pSheet = pBook->getSheet( sheetIndex ); if ( pSheet == nullptr ) @@ -460,6 +460,217 @@ void LoadRepairSuggestionFromXlsx( const std::wstring & filePat pBook->release(); } +void LoadNewRepairMonitorReportFromXlsx( const std::wstring & filePath, + unsigned sheetIndex, + unsigned startRowIndex, + std::vector & recordVector ) +{ + Book * pBook = xlCreateXMLBookW(); + Sheet * pSheet = nullptr; + + if ( pBook == nullptr ) + { + throw runtime_error( "libxl库加载失败!" ); + } + + setKey( pBook ); + + if ( pBook->load( filePath.c_str() ) != true ) + { + string errorMessage = "打开文件失败!"; + errorMessage.append( pBook->errorMessage() ); + + throw runtime_error( errorMessage ); + } + + pSheet = pBook->getSheet( sheetIndex ); + + if ( pSheet == nullptr ) + { + string errorMessage = "读取sheet失败!"; + errorMessage.append( pBook->errorMessage() ); + + pBook->release(); + + throw runtime_error( errorMessage ); + } + + int lastRowIndex = pSheet->lastRow(); + int firstRowIndex = pSheet->firstRow(); + int rowIndex = firstRowIndex + startRowIndex; + + while ( rowIndex <= lastRowIndex ) + { + int colunmIndex = pSheet->firstCol(); + + NewRepairMonitorReportRecord record; + + record.分公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.部门组名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.报案号_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.报案日期_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.出险日期_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.出险地点_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.事故车目前位置_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.车损序号_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.车牌_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.vin码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.车龄_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.品牌代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.品牌名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.车系名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.使用性质名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.保单号_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.标的车_三者车_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.是否9座以下企业用车_行政用车_家庭自用车_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核价金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核损配件核损金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核损工时费核损金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核损辅料核损金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核损外修费核损金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核损施救费核损金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案配件核损金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案工时费核损金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案辅料核损金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案外修费核损金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案施救费核损金额_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.接报案人分公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.接报案人工号_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.接报案人名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一任务分派时间_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一定损员分公司_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一定损员部门组名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一定损员代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一定损员名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一车商是否已阅读_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一车上是否预约进厂_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一车商是否推荐失败_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一车商是否进厂确认_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一车商是否出场确认_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二任务分派时间_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二定损员分公司_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二定损员部门组名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二定损员代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二定损员名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二车商是否已阅读_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二车上是否预约进厂_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二车商是否推荐失败_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二车商是否进厂确认_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二车商是否出场确认_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三任务分派时间_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三定损员分公司_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三定损员部门组名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三定损员代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三定损员名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三车商是否已阅读_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三车上是否预约进厂_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三车商是否推荐失败_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三车商是否进厂确认_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三车商是否出场确认_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.其他查勘员信息_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.是否推荐_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.是否存在工单_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.工单类型_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.查勘员操作类型_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.案件状态名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.车状_当前状态_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.车状_报案环节_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.车状_现场推荐环节_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.车状_核价通过环节_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.车状_结案环节_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.承保车商代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.承保车商名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.报案车商分公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.报案车商部门组名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.报案车商代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.报案车商名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.现场推荐车商分公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.现场推荐车商代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.现场推荐车商名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核价车商分公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核价车商部门组名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核价车商代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核价车商名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.推荐车商与核价车商是否一致_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核价修理厂归属公司代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核价修理厂归属公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核价修理厂_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核价修理厂名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.估损单号_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核价通过时间_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.定损员机构_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.定损员代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.定损员名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案车商分公司_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案车商部门组名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案车商代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案车商名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.推荐车商与结案车商是否一致_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案修理厂归属公司代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案修理厂归属公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案修理厂代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案修理厂名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.车辆进厂时间_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.车辆出厂时间_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案时间_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.事故经过_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.数据更新日期_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.备注_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.估损单模板_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.返修开关_报案_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.送修开关_报案_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.返修开关_核价_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.送修开关_核价_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.返修开关_结案_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.送修开关_结案_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.查勘员分公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.查勘员代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.查勘员名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.核价修理厂归属中支_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.结案修理厂归属中支_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.是否诉讼_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.座席推荐分公司代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.座席推荐分公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.座席推荐车商名代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.座席推荐车商名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.座席推荐操作类型_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.座席推荐排名_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一次推荐分公司代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一次推荐分公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一次推荐车商代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一次推荐车商名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一次推荐工具_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一次推荐操作类型_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第一次推荐排名_其他推荐信息_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二次推荐分公司代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二次推荐分公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二次推荐车商代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二次推荐车商名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二次推荐工具_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二次推荐操作类型_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第二次推荐排名_其他推荐信息_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三次推荐分公司代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三次推荐分公司名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三次推荐车商代码_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三次推荐车商名称_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三次推荐工具_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三次推荐操作类型_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.第三次推荐排名_其他推荐信息_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.其他推荐信息_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.推荐失败具体原因_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.是否现场报案_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.报案地点_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + record.是否在厂报案_ = ReadCellStringFromXlsx( pBook, sheetIndex, rowIndex, colunmIndex++, true ); + + recordVector.push_back( record ); + + rowIndex++; + } + + pBook->release(); +} + void LoadRepairOrderFromXls( const std::wstring & filePath, unsigned sheetIndex, unsigned startRowIndex, diff --git a/代码/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.h b/代码/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.h index 882f3d6..7258ee6 100644 --- a/代码/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.h +++ b/代码/cpp/car_dealer_util/source/Data/DataManipulation/Excel/LoadFromExcel.h @@ -6,6 +6,7 @@ #include "../../Datastructure/CarDealerAchievement/CarDealerAchievement.h" #include "../../Datastructure/RepairOrder/RepairOrder.h" #include "../../Datastructure/RepairSuggestion/RepairSuggestionRecord.h" +#include "../../Datastructure/新送返修监控报表/新送返修监控报表.h" /************************************************ * \brief @@ -59,3 +60,16 @@ void LoadRepairSuggestionFromXlsx( const std::wstring & filePat unsigned int sheetIndex, unsigned int startRowIndex, std::vector & recordVector ); + + +/************************************************ +* \brief 读取新送返修监控报表数据 +* \param filePath +* \param sheetIndex +* \param startRowIndex +* \param recordVector +************************************************/ +void LoadNewRepairMonitorReportFromXlsx( const std::wstring & filePath, + unsigned int sheetIndex, + unsigned int startRowIndex, + std::vector & recordVector ); diff --git a/代码/cpp/car_dealer_util/source/Data/DataManipulation/oracle/ImportToOracle.cpp b/代码/cpp/car_dealer_util/source/Data/DataManipulation/oracle/ImportToOracle.cpp index ec0164c..ad946fc 100644 --- a/代码/cpp/car_dealer_util/source/Data/DataManipulation/oracle/ImportToOracle.cpp +++ b/代码/cpp/car_dealer_util/source/Data/DataManipulation/oracle/ImportToOracle.cpp @@ -509,6 +509,11 @@ void ImportRepairSuggestionToOracle( const std::string & string 车牌号 = QString::fromStdWString( iterOrder->getPlateNumber() ).toLocal8Bit(); string 厂牌型号 = QString::fromStdWString( iterOrder->getBrandName() ).toLocal8Bit(); + if ( 工单号.empty() == true ) + { + continue; + } + //执行语句 OCI_BindString( pStmt, ":a_order_no", (otext*)工单号.c_str(), 工单号.size() ); OCI_BindString( pStmt, ":a_order_type", (otext*)工单类型.c_str(), 工单类型.size() ); @@ -526,14 +531,20 @@ void ImportRepairSuggestionToOracle( const std::string & } catch ( runtime_error & error ) { - //输出日志,让过程继续 + //rollback,停止保存 string errorMessage = "送返修工单编号"; errorMessage.append( QString::fromStdWString( iterOrder->getOrderNo() ).toLocal8Bit() ); errorMessage.append( "保存失败,提示信息:" ); errorMessage.append( error.what() ); - output_error_message( errorMessage ); + //output_error_message( errorMessage ); + + OCI_Rollback( pConn ); + OCI_ConnectionFree( pConn ); + OCI_Cleanup(); + + throw runtime_error( errorMessage ); } } @@ -541,3 +552,194 @@ void ImportRepairSuggestionToOracle( const std::string & OCI_ConnectionFree( pConn ); OCI_Cleanup(); } + +void ImportNewRepairMonitorToOracle( const std::string & userName, + const std::string & password, + const std::string & tnsName, + const std::vector & recordVector ) +{ + OCI_Connection * pConnection = nullptr; + OCI_Statement * pStatment = nullptr; + int returnCode = -1; + + const otext * szSql = + "BEGIN \n " + " car_dealer.data_import_util_pkg.导入新送返修监控报表(':1', \n " + " ':2', \n " + " ':3', \n " + " ':4', \n " + " ':5', \n " + " ':6', \n " + " ':7', \n " + " ':8', \n " + " ':9', \n " + " ':10', \n " + " ':11', \n " + " ':12', \n " + " ':13', \n " + " ':14', \n " + " ':15', \n " + " ':16', \n " + " ':17', \n " + " ':18', \n " + " ':19', \n " + " ':20', \n " + " ':21', \n " + " ':22', \n " + " ':23', \n " + " ':24', \n " + " ':25', \n " + " ':26', \n " + " ':27', \n " + " ':28', \n " + " ':29', \n " + " ':30', \n " + " ':31', \n " + " ':32', \n " + " ':33', \n " + " ':34', \n " + " ':35', \n " + " ':36', \n " + " ':37', \n " + " ':38', \n " + " ':39', \n " + " ':40', \n " + " ':41', \n " + " ':42', \n " + " ':43', \n " + " ':44', \n " + " ':45', \n " + " ':46', \n " + " ':47', \n " + " ':48', \n " + " ':49', \n " + " ':50', \n " + " ':51', \n " + " ':52', \n " + " ':53', \n " + " ':54', \n " + " ':55', \n " + " ':56', \n " + " ':57', \n " + " ':58', \n " + " ':59', \n " + " ':60', \n " + " ':61', \n " + " ':62', \n " + " ':63', \n " + " ':64', \n " + " ':65', \n " + " ':66', \n " + " ':67', \n " + " ':68', \n " + " ':69', \n " + " ':70', \n " + " ':71', \n " + " ':72', \n " + " ':73', \n " + " ':74', \n " + " ':75', \n " + " ':76', \n " + " ':77', \n " + " ':78', \n " + " ':79', \n " + " ':80', \n " + " ':81', \n " + " ':82', \n " + " ':83', \n " + " ':84', \n " + " ':85', \n " + " ':86', \n " + " ':87', \n " + " ':88', \n " + " ':89', \n " + " ':90', \n " + " ':91', \n " + " ':92', \n " + " ':93', \n " + " ':94', \n " + " ':95', \n " + " ':96', \n " + " ':97', \n " + " ':98', \n " + " ':99', \n " + " ':100', \n " + " ':101', \n " + " ':102', \n " + " ':103', \n " + " ':104', \n " + " ':105', \n " + " ':106', \n " + " ':107', \n " + " ':108', \n " + " ':109', \n " + " ':110', \n " + " ':111', \n " + " ':112', \n " + " ':113', \n " + " ':114', \n " + " ':115', \n " + " ':116', \n " + " ':117', \n " + " ':118', \n " + " ':119', \n " + " ':120', \n " + " ':121', \n " + " ':122', \n " + " ':123', \n " + " ':124', \n " + " ':125', \n " + " ':126', \n " + " ':127', \n " + " ':128', \n " + " ':129', \n " + " ':130', \n " + " ':131', \n " + " ':132', \n " + " ':133', \n " + " ':134', \n " + " ':135', \n " + " ':136', \n " + " ':137', \n " + " ':138', \n " + " ':139', \n " + " ':140', \n " + " ':141', \n " + " ':142', \n " + " ':143', \n " + " ':144', \n " + " ':145', \n " + " ':146', \n " + " ':147', \n " + " ':148', \n " + " ':149', \n " + " ':150', \n " + " ':151', \n " + " ':152', \n " + " ':153', \n " + " ':154', \n " + " ':155', \n " + " ':156', \n " + " ':157'); \n " + "END; \n "; + + //初始化 + returnCode = OCI_Initialize( error_handler, nullptr, OCI_ENV_CONTEXT ); + + if ( static_cast(returnCode) == false ) + { + //ocilib加载错误 + throw runtime_error( "" ); + } + + //连接 + pConnection = OCI_CreateConnection( tnsName.c_str(), + userName.c_str(), + password.c_str(), + OCI_SESSION_DEFAULT ); + + if ( pConnection == nullptr ) + { + throw runtime_error( "" ); + } +} diff --git a/代码/cpp/car_dealer_util/source/Data/DataManipulation/oracle/ImportToOracle.h b/代码/cpp/car_dealer_util/source/Data/DataManipulation/oracle/ImportToOracle.h index f2acc44..ed07688 100644 --- a/代码/cpp/car_dealer_util/source/Data/DataManipulation/oracle/ImportToOracle.h +++ b/代码/cpp/car_dealer_util/source/Data/DataManipulation/oracle/ImportToOracle.h @@ -6,6 +6,7 @@ #include "../../Datastructure/CarDealerScheme/CarDealerScheme.h" #include "../../Datastructure/RepairOrder/RepairOrder.h" #include "../../Datastructure/RepairSuggestion/RepairSuggestionRecord.h" +#include "../Excel/LoadFromExcel.h" /************************************************ @@ -68,3 +69,8 @@ void ImportRepairSuggestionToOracle( const std::string & const std::string & password, const std::string & tnsName, const std::vector & recordVector ); + +void ImportNewRepairMonitorToOracle( const std::string & userName, + const std::string & password, + const std::string & tnsName, + const std::vector & recordVector ); diff --git a/代码/cpp/car_dealer_util/source/Data/Datastructure/新送返修监控报表/新送返修监控报表.cpp b/代码/cpp/car_dealer_util/source/Data/Datastructure/新送返修监控报表/新送返修监控报表.cpp new file mode 100644 index 0000000..9340eca --- /dev/null +++ b/代码/cpp/car_dealer_util/source/Data/Datastructure/新送返修监控报表/新送返修监控报表.cpp @@ -0,0 +1,3 @@ + +#include "新送返修监控报表.h" + diff --git a/代码/cpp/car_dealer_util/source/Data/Datastructure/新送返修监控报表/新送返修监控报表.h b/代码/cpp/car_dealer_util/source/Data/Datastructure/新送返修监控报表/新送返修监控报表.h new file mode 100644 index 0000000..e002f79 --- /dev/null +++ b/代码/cpp/car_dealer_util/source/Data/Datastructure/新送返修监控报表/新送返修监控报表.h @@ -0,0 +1,165 @@ + +#pragma once + +#include + +typedef struct NewRepairMonitorReportRecord_ +{ + std::wstring 分公司名称_; + std::wstring 部门组名称_; + std::wstring 报案号_; + std::wstring 报案日期_; + std::wstring 出险日期_; + std::wstring 出险地点_; + std::wstring 事故车目前位置_; + std::wstring 车损序号_; + std::wstring 车牌_; + std::wstring vin码_; + std::wstring 车龄_; + std::wstring 品牌代码_; + std::wstring 品牌名称_; + std::wstring 车系名称_; + std::wstring 使用性质名称_; + std::wstring 保单号_; + std::wstring 标的车_三者车_; + std::wstring 是否9座以下企业用车_行政用车_家庭自用车_; + std::wstring 核价金额_; + std::wstring 核损配件核损金额_; + std::wstring 核损工时费核损金额_; + std::wstring 核损辅料核损金额_; + std::wstring 核损外修费核损金额_; + std::wstring 核损施救费核损金额_; + std::wstring 结案金额_; + std::wstring 结案配件核损金额_; + std::wstring 结案工时费核损金额_; + std::wstring 结案辅料核损金额_; + std::wstring 结案外修费核损金额_; + std::wstring 结案施救费核损金额_; + std::wstring 接报案人分公司名称_; + std::wstring 接报案人工号_; + std::wstring 接报案人名称_; + std::wstring 第一任务分派时间_; + std::wstring 第一定损员分公司_; + std::wstring 第一定损员部门组名称_; + std::wstring 第一定损员代码_; + std::wstring 第一定损员名称_; + std::wstring 第一车商是否已阅读_; + std::wstring 第一车上是否预约进厂_; + std::wstring 第一车商是否推荐失败_; + std::wstring 第一车商是否进厂确认_; + std::wstring 第一车商是否出场确认_; + std::wstring 第二任务分派时间_; + std::wstring 第二定损员分公司_; + std::wstring 第二定损员部门组名称_; + std::wstring 第二定损员代码_; + std::wstring 第二定损员名称_; + std::wstring 第二车商是否已阅读_; + std::wstring 第二车上是否预约进厂_; + std::wstring 第二车商是否推荐失败_; + std::wstring 第二车商是否进厂确认_; + std::wstring 第二车商是否出场确认_; + std::wstring 第三任务分派时间_; + std::wstring 第三定损员分公司_; + std::wstring 第三定损员部门组名称_; + std::wstring 第三定损员代码_; + std::wstring 第三定损员名称_; + std::wstring 第三车商是否已阅读_; + std::wstring 第三车上是否预约进厂_; + std::wstring 第三车商是否推荐失败_; + std::wstring 第三车商是否进厂确认_; + std::wstring 第三车商是否出场确认_; + std::wstring 其他查勘员信息_; + std::wstring 是否推荐_; + std::wstring 是否存在工单_; + std::wstring 工单类型_; + std::wstring 查勘员操作类型_; + std::wstring 案件状态名称_; + std::wstring 车状_当前状态_; + std::wstring 车状_报案环节_; + std::wstring 车状_现场推荐环节_; + std::wstring 车状_核价通过环节_; + std::wstring 车状_结案环节_; + std::wstring 承保车商代码_; + std::wstring 承保车商名称_; + std::wstring 报案车商分公司名称_; + std::wstring 报案车商部门组名称_; + std::wstring 报案车商代码_; + std::wstring 报案车商名称_; + std::wstring 现场推荐车商分公司名称_; + std::wstring 现场推荐车商代码_; + std::wstring 现场推荐车商名称_; + std::wstring 核价车商分公司名称_; + std::wstring 核价车商部门组名称_; + std::wstring 核价车商代码_; + std::wstring 核价车商名称_; + std::wstring 推荐车商与核价车商是否一致_; + std::wstring 核价修理厂归属公司代码_; + std::wstring 核价修理厂归属公司名称_; + std::wstring 核价修理厂_; + std::wstring 核价修理厂名称_; + std::wstring 估损单号_; + std::wstring 核价通过时间_; + std::wstring 定损员机构_; + std::wstring 定损员代码_; + std::wstring 定损员名称_; + std::wstring 结案车商分公司_; + std::wstring 结案车商部门组名称_; + std::wstring 结案车商代码_; + std::wstring 结案车商名称_; + std::wstring 推荐车商与结案车商是否一致_; + std::wstring 结案修理厂归属公司代码_; + std::wstring 结案修理厂归属公司名称_; + std::wstring 结案修理厂代码_; + std::wstring 结案修理厂名称_; + std::wstring 车辆进厂时间_; + std::wstring 车辆出厂时间_; + std::wstring 结案时间_; + std::wstring 事故经过_; + std::wstring 数据更新日期_; + std::wstring 备注_; + std::wstring 估损单模板_; + std::wstring 返修开关_报案_; + std::wstring 送修开关_报案_; + std::wstring 返修开关_核价_; + std::wstring 送修开关_核价_; + std::wstring 返修开关_结案_; + std::wstring 送修开关_结案_; + std::wstring 查勘员分公司名称_; + std::wstring 查勘员代码_; + std::wstring 查勘员名称_; + std::wstring 核价修理厂归属中支_; + std::wstring 结案修理厂归属中支_; + std::wstring 是否诉讼_; + std::wstring 座席推荐分公司代码_; + std::wstring 座席推荐分公司名称_; + std::wstring 座席推荐车商名代码_; + std::wstring 座席推荐车商名称_; + std::wstring 座席推荐操作类型_; + std::wstring 座席推荐排名_; + std::wstring 第一次推荐分公司代码_; + std::wstring 第一次推荐分公司名称_; + std::wstring 第一次推荐车商代码_; + std::wstring 第一次推荐车商名称_; + std::wstring 第一次推荐工具_; + std::wstring 第一次推荐操作类型_; + std::wstring 第一次推荐排名_其他推荐信息_; + std::wstring 第二次推荐分公司代码_; + std::wstring 第二次推荐分公司名称_; + std::wstring 第二次推荐车商代码_; + std::wstring 第二次推荐车商名称_; + std::wstring 第二次推荐工具_; + std::wstring 第二次推荐操作类型_; + std::wstring 第二次推荐排名_其他推荐信息_; + std::wstring 第三次推荐分公司代码_; + std::wstring 第三次推荐分公司名称_; + std::wstring 第三次推荐车商代码_; + std::wstring 第三次推荐车商名称_; + std::wstring 第三次推荐工具_; + std::wstring 第三次推荐操作类型_; + std::wstring 第三次推荐排名_其他推荐信息_; + std::wstring 其他推荐信息_; + std::wstring 推荐失败具体原因_; + std::wstring 是否现场报案_; + std::wstring 报案地点_; + std::wstring 是否在厂报案_; +} NewRepairMonitorReportRecord; diff --git a/代码/cpp/car_dealer_util/source/test/test.cpp b/代码/cpp/car_dealer_util/source/test/test.cpp index 03d94ca..f12e640 100644 --- a/代码/cpp/car_dealer_util/source/test/test.cpp +++ b/代码/cpp/car_dealer_util/source/test/test.cpp @@ -22,6 +22,7 @@ void excelTest() vector achievementsVector; vector repairOrderVector; vector suggestionRecordsVector; + vector repairMonitorVector; string userName = "car_dealer"; string password = "cpic123456"; @@ -31,23 +32,27 @@ void excelTest() wstring filePathCarDealerScheme = L"D:/develop/projects_win/2019/car_dealer_util/数据/PC端导入模板(管理员版).xlsx"; wstring filePathCarDealerAchievement = L"D:/develop/projects_win/2019/car_dealer_util/数据/PC端导入模板(客户经理版).xlsx"; wstring filePathRepairSuggestion = L"D:/develop/projects_win/2019/car_dealer_util/数据/卢霖城 - 推荐表.xlsx"; - //string xlsFilePath = "D:/develop/projects_win/2019/car_dealer_util/数据/345517_1.xls"; + wstring filePathNewRepairMonitor = L"D:/develop/projects_win/2019/car_dealer_util/数据/新送返修监控报表.xlsx"; //测试车商方案 //LoadCarDealerSchemeFromXlsx( filePathCarDealerScheme, 0, 1, schemeVector ); //ImportCarDealerSchemeToOracle( userName, password, tnsName, schemeVector ); //测试车商业绩 - LoadCarDealerAchievementFromXlsx( filePathCarDealerAchievement, 0, 1, achievementsVector ); - ImportCarDealerAchievementToOracleCpp( userName, password, tnsName, achievementsVector ); + //LoadCarDealerAchievementFromXlsx( filePathCarDealerAchievement, 0, 1, achievementsVector ); + //ImportCarDealerAchievementToOracleCpp( userName, password, tnsName, achievementsVector ); //测试送返修工单 //LoadRepairOrderFromXlsx(filePathRepairOrder, 0, 1, repairOrderVector); //ImportRepairOrderToOracle("car_dealer", "cpic123456", "xmcx1", repairOrderVector); //测试送返修推荐 - LoadRepairSuggestionFromXlsx( filePathRepairSuggestion, 0, 1, suggestionRecordsVector ); - + //LoadRepairSuggestionFromXlsx( filePathRepairSuggestion, 0, 1, suggestionRecordsVector ); + //ImportRepairSuggestionToOracle( userName, password, tnsName, suggestionRecordsVector); + + //测试新送返修监控报表 + LoadNewRepairMonitorReportFromXlsx(filePathNewRepairMonitor, 0, 1, repairMonitorVector); + return; } diff --git a/数据/卢霖城 - 推荐表 - 副本.xlsx b/数据/卢霖城 - 推荐表 - 副本.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..64de7b90afd32aae5db36d1fd851390481d8f306 GIT binary patch literal 61608 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 lf9lx3Sb{)%n}4sKMox~M4i68{!%h(P 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 delta 6885 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 cl_;ME+$E`3D5<@@eX5S>mbx0RupRB>(^b