DPS/DataPlatform/TransformExcel.h

115 lines
3.2 KiB
C
Raw Normal View History

2025-06-23 10:41:33 +08:00
#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;
};