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 0000000..64de7b9 Binary files /dev/null and b/数据/卢霖城 - 推荐表 - 副本.xlsx differ diff --git a/数据/新送返修监控报表 - 字段.xlsx b/数据/新送返修监控报表 - 字段.xlsx index 1df88e4..6ef0d1d 100644 Binary files a/数据/新送返修监控报表 - 字段.xlsx and b/数据/新送返修监控报表 - 字段.xlsx differ