115 lines
3.2 KiB
C
115 lines
3.2 KiB
C
|
#pragma once
|
|||
|
|
|||
|
#include "BaseTransform.h"
|
|||
|
#include <QString>
|
|||
|
#include <QList>
|
|||
|
#include <QStack>
|
|||
|
|
|||
|
#include "DataModelData.h"
|
|||
|
#include "ExcelOP.h"
|
|||
|
|
|||
|
class DataManager;
|
|||
|
class DataClass;
|
|||
|
class DataPack;
|
|||
|
class DataAttribute;
|
|||
|
|
|||
|
|
|||
|
class TransformExcel:public BaseTransform
|
|||
|
{
|
|||
|
Q_OBJECT
|
|||
|
public:
|
|||
|
TransformExcel(DataManager* pManager, int datamodelId);
|
|||
|
~TransformExcel();
|
|||
|
|
|||
|
bool openFile(QString path) override;
|
|||
|
void closeFile(QString path) override;
|
|||
|
|
|||
|
bool importData(QString& errMsg) override;
|
|||
|
bool exportData(json& parameter) override;
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool addDataPackToTree(QList<QStringList>& result);
|
|||
|
bool addDataClassToTree(QList<QStringList>& result);
|
|||
|
bool addDataAttributetoTree(QList<QStringList>& result);
|
|||
|
//<2F><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool loadDataPack(const QStringList& data, DataPack* pData);
|
|||
|
bool loadDataClass(const QStringList& data, DataClass* pData);
|
|||
|
bool loadDataAttribute(const QStringList& data, DataAttribute* pData);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void importExcelData(DataPack* pNew, DataPack* pOld);
|
|||
|
void importExcelData(DataClass* pNew, DataClass* pOld);
|
|||
|
void importExcelData(DataAttribute* pNew, DataAttribute* old);
|
|||
|
|
|||
|
void checkCoverName(DPData* pOld, QString& name);//<2F><><EFBFBD>鸲<EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>*/
|
|||
|
bool processDataImport(DPData* pData);
|
|||
|
/*<2A><><EFBFBD>뵼<EFBFBD><EBB5BC>list*/
|
|||
|
void insertImportList(int type, int id);
|
|||
|
void insertImportAtt(bool delAtt);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
// bool processPack(QString name);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// bool ProcessNoSameDataClass(DataClass*& pNew, QMap<int, DPData*>& sameNamePack);
|
|||
|
bool proccessAttribute(DataClass* pNew, DataClass* pOld);
|
|||
|
//<2F><><EFBFBD><EFBFBD>stack
|
|||
|
bool processImportStack(/*QStack<DPData*>& stack,*/ DPData* pDest);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
|||
|
void checkImportRelateAttribute(DataAttribute* pData, const QString name);
|
|||
|
|
|||
|
|
|||
|
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>
|
|||
|
void writeDataAttribute(QMap<int, DataAttribute*>& mapdata);
|
|||
|
void writeDataClass(QMap<int, DataClass*>& mapdata); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void writeDataPack(QMap<int, DataPack*>& mapdata); //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>
|
|||
|
//<2F>ݹ鴦<DDB9><E9B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// void accessJsonNode(json& para);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|||
|
bool processCurrentNode(DPData* pData);
|
|||
|
//<2F><><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int findAndProcessSameNode(DPData* pData);
|
|||
|
//<2F><><EFBFBD>ҷ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool processNoSameNode(DPData* pData);
|
|||
|
|
|||
|
void freeNode(DPData* pData);
|
|||
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ļ<EFBFBD>
|
|||
|
void backupDBFile();
|
|||
|
//<2F>ָ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
bool rollBackDBFile();
|
|||
|
|
|||
|
private:
|
|||
|
ExcelOP excel;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ṹ
|
|||
|
DataModelData newTreeRoot;
|
|||
|
//map:<3A><><EFBFBD>Ʊ<EFBFBD>ʶ-<2D><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
|
|||
|
QMap<QString, DataPack*> mapDataPack;
|
|||
|
QMap<QString, DataClass*> mapDataClass;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> keyΪ<79><CEAA><EFBFBD>Ʊ<EFBFBD>ʶ, value = 0 <20><>ʼ<EFBFBD><CABC>=1 <20>Ѵ<EFBFBD><D1B4><EFBFBD>
|
|||
|
QMap<QString, int> dataMark;
|
|||
|
QStack<DPData*> importStack; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>뵽<EFBFBD><EBB5BD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//˳<><CBB3><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6>㵽<EFBFBD>ײ<EFBFBD>
|
|||
|
QList<DPData*> levelNodeOrder;
|
|||
|
|
|||
|
int index = 1;//ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>ʱ<EFBFBD><CAB1>id
|
|||
|
DataManager* _pDataManager_ref;
|
|||
|
int _dataModelId = 0;
|
|||
|
//<2F><>ͷ
|
|||
|
QStringList attributeHead;
|
|||
|
QStringList dataClassHead;
|
|||
|
QStringList packHead;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
QMap<int, DataPack*> packMapEx;
|
|||
|
QMap<int, DataClass*> classMapEx;
|
|||
|
QMap<int ,DataAttribute*> attributeMapEx;
|
|||
|
//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD>
|
|||
|
QList<DataAttribute*> relAttList;
|
|||
|
//<2F>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>
|
|||
|
int _importClassCount = 0;
|
|||
|
int _importPackCount = 0;
|
|||
|
int _importAttributeCount = 0;
|
|||
|
//
|
|||
|
QString _srcFile;
|
|||
|
QString _bakFile;
|
|||
|
QString _midFile;
|
|||
|
};
|