DPS/DataPlatform/TransformExcel.cpp

1659 lines
40 KiB
C++
Raw Normal View History

2025-06-23 10:41:33 +08:00
#pragma execution_character_set("utf-8")
#include <QStack>
#include "TransformExcel.h"
#include "DataModelData.h"
#include "DataPack.h"
#include "DataClass.h"
#include "DataAttribute.h"
#include "DataManager.h"
#include "M_NormalColumnDAO.h"
#include "global.h"
#include "common.h"
#include <Qdir>
#include <QFile>
#include <QApplication>
static const int PROCESSED = 1;
TransformExcel::TransformExcel(DataManager* pManager, int datamodeld) :_pDataManager_ref(pManager), _dataModelId(datamodeld)
{
attributeHead << "<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
<< "Ĭ<EFBFBD><EFBFBD>ֵ" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD>Ƿ<EFBFBD>Ψһ" << "<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>" << "<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD>ֵλ<EFBFBD><EFBFBD>"
<< "<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
dataClassHead << "<EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
packHead << "<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>";
}
void TransformExcel::freeNode(DPData* pData)
{
if (pData == nullptr)
{
return;
}
qDeleteAll(pData->_childrenMap);
pData->_childrenMap.clear();
}
TransformExcel::~TransformExcel()
{
if (newTreeRoot._childrenMap.size() == 0)
{
return;
}
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DPData* pData = &newTreeRoot;
freeNode(pData);
}
bool TransformExcel::importData(QString& errMsg)
{
bool hasEmptyCell;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ---------
QList<QStringList> result;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!excel.readSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>", result, hasEmptyCell))
{
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: û<><C3BB>ģ<EFBFBD><C4A3>sheetҳ<74><D2B3><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
return false;
}
if (!addDataPackToTree(result))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
return false;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
result.clear();
if (!excel.readSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", result, hasEmptyCell))
{
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sheetҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
return false;
}
if (!addDataClassToTree(result))
{
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>";
return false;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>
result.clear();
if (!excel.readSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", result, hasEmptyCell))
{
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sheetҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
return false;
}
if (!addDataAttributetoTree(result))
{
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>д<EFBFBD>";
return false;
}
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
backupDBFile();
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>-------------
//1. <20>ӵײ㿪ʼ<E3BFAA><CABC><EFBFBD><EFBFBD>
levelNodeOrder.push_back(&newTreeRoot);
if (!processDataImport(&newTreeRoot))
{
if (rollBackDBFile())
{
errMsg = "ģ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
}
else
{
QString tempFile = QCoreApplication::applicationDirPath() + "/rollback.txt";
QFile file(tempFile);
if (file.exists())
{
QFile::remove(tempFile);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD>
//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
file.open(QIODevice::ReadWrite | QIODevice::Text);
QTextStream stream(&file);
stream << _srcFile;
file.close();
//<2F><><EFBFBD>ݻع<DDBB>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LOG(ERROR) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD>ݻع<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
errMsg = "<EFBFBD><EFBFBD><EFBFBD>ݻع<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>ݻع<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 2);
}
return false;
}
else
{
QFileInfo fileInfo(_bakFile);
if (fileInfo.isFile())
{
bool ret = QFile::remove(_bakFile);
}
return true;
}
return true;
}
bool TransformExcel::processDataImport(DPData* /*pData*/)
{
bool ret = false;
int index = 0;
while (index < levelNodeOrder.size())
{
DPData* pdata = levelNodeOrder.at(index);
for (auto i : pdata->_childrenMap)
{
if (i->_baseType == g_TYPE_DATAATTRUBUTE)
{
continue;
}
levelNodeOrder.push_back(i);
}
index++;
}
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>㣨ģ<E3A3A8>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㶼Ҫ<E3B6BC><D2AA><EFBFBD><EFBFBD>
for (int i = levelNodeOrder.size() - 1; i > 0; i--)
{
DPData* pdata = levelNodeOrder.at(i);
if (dataMark[pdata->_name] == PROCESSED)
{
continue;
}
ret = processCurrentNode(pdata);
if (!ret)
{
return false;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
for (int i = 0; i < relAttList.size(); i++)
{
DataAttribute* pAtt = relAttList.at(i);
DPData* pClass = _pDataManager_ref->findobjectByNameInDatamodel(g_TYPE_DATACLASS, "name", pAtt->_fkname, _dataModelId);
if (pClass)
{
//<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ģ<EFBFBD><C4A3><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
DPData* pRealAtt = _pDataManager_ref->findObjectById(DataManager::DataType::dataAttribute, pAtt->_id);
if (pRealAtt)
{
qobject_cast<DataAttribute*>(pRealAtt)->_wFkTableID = pClass->_id;
if (!pRealAtt->saveSelf())
{
QString msg = "<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:" + pRealAtt->_name + "--" + "class ID:" + QString::number(pRealAtt->_parent->_id);
LOG(INFO) << CommonHelper::qstringToString(msg);
return false;
}
QString msg = "<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:" + pRealAtt->_name + "--" + "fkTableID:" + QString::number(qobject_cast<DataAttribute*>(pRealAtt)->_wFkTableID);
LOG(INFO) << CommonHelper::qstringToString(msg);
}
else
{
LOG(INFO) << CommonHelper::qstringToString("<EFBFBD>ҹ<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
QString msg = "<EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> " + pAtt->_name;
CommonHelper::message(msg,2);
return false;
}
}
else {
QString msg = "<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> " + pAtt->_fkname;
CommonHelper::message(msg, 2);
return false;
}
}
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool TransformExcel::processCurrentNode(DPData* pData)
{
static DPData* pdst = nullptr;
int ret = findAndProcessSameNode(pData);
if (ret == 1)
{
return false;//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
}
if (ret == 0)
{
//<2F><><EFBFBD>Ѱ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dataMark.insert(pData->_name, PROCESSED);
return true;
}
else
{
if (pData->_baseType == g_TYPE_DATAMODEL)
{
//<2F><>ǰΪ<C7B0><CEAA>ģ<EFBFBD><C4A3>
return processImportStack(pdst);
}
if (processNoSameNode(pData))
{
return true;
}
return false;
}
}
//<2F><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// 0: ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>¼ӳɹ<D3B3>
// 1<><31><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
// 2: û<>ҵ<EFBFBD>ͬ<EFBFBD><CDAC>
int TransformExcel::findAndProcessSameNode(DPData* pData)
{
DPData* pfindData = nullptr;
pfindData = _pDataManager_ref->findobjectByNameInDatamodel(pData->_baseType, "name", pData->_name, _dataModelId);
if (pfindData)
{
if (pData->_baseType == g_TYPE_DATACLASS)
{
DataClass* pNew = qobject_cast<DataClass*>(pData);
DataClass* pOld = qobject_cast<DataClass*>(pfindData);
importExcelData(pNew, pOld);
_importClassCount++;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E6BBBB><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (proccessAttribute(pNew, pOld))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD>
pNew->_parent->deleteChild(pNew->_id);
delete pNew;
pNew = nullptr;
return 0;
}
else
{
return 1;
}
}
else if (pData->_baseType == g_TYPE_DATAPACK)
{
//ģ<><C4A3>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>child
DataPack* pNew = qobject_cast<DataPack*>(pData);
DataPack* pOld = qobject_cast<DataPack*>(pfindData);
importExcelData(pNew, pOld);
if (!processImportStack(pOld))
{
return 1;
}
return 0;
}
return 0;
}
return 2;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool TransformExcel::processNoSameNode(DPData* pData)
{
importStack.push(pData);
DPData* pCur = pData;
while (pCur->_parent)
{
pCur = pCur->_parent;
return processCurrentNode(pCur);
}
return true;
}
// <20><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// bool TransformExcel::ProcessNoSameDataClass(DataClass*& pNew, QMap<int,DPData*>& sameNamePack)
// {
// QStack<DPData*> importStack; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EBB5BD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// importStack.push(pNew);
// DPData* pOldDst = nullptr; //Ŀ<><C4BF>ģ<EFBFBD><C4A3>
// DPData* pCur = pNew->_parent;
// while (pCur->_parent)
// {
// //<2F>Ȳ<EFBFBD><C8B2><EFBFBD>ͬ<EFBFBD><CDAC>ģ<EFBFBD><C4A3>
// pOldDst = _pDataManager_ref->findobjectByNameInDatamodel(pCur->_baseType, "name", pCur->_name, _dataModelId);
// if (pOldDst)
// {
// //<2F>ҵ<EFBFBD>ͬ<EFBFBD><CDAC>ģ<EFBFBD><C4A3>,<2C>ϲ<EFBFBD><CFB2><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// DataPack* pNew = qobject_cast<DataPack*>(pCur);
// DataPack* pOld = qobject_cast<DataPack*>(pOldDst);
// importExcelData(pNew, pOld);
// // sameNamePack.insert(pCur->_id, pCur);
// break;
// }
// else
// {
// //û<><C3BB>ͬ<EFBFBD><CDAC>ģ<EFBFBD><EFBFBD><E9A3AC>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>
// importStack.push(pCur);
// pCur = pCur->_parent;
// }
// }
//
// return processImportStack(/*importStack, */pOldDst);
// }
bool TransformExcel::processImportStack(/*QStack<DPData*>& importStack,*/ DPData* pOldDst)
{
while (!importStack.isEmpty())
{
DPData* pData = importStack.pop();
if (dataMark.value(pData->_name) == PROCESSED)
{
return true;
}
if (pData->_baseType == g_TYPE_DATACLASS)
{
DataClass* pClass = qobject_cast<DataClass*>(pData);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ࣬<E0A3AC><D6B1><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
if (pOldDst)
{
int oldMapId = pClass->_id;
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6>ģ<EFBFBD>
int id = 0;
if (_pDataManager_ref->findobjectByNameInDatamodel(g_TYPE_DATAPACK, "name", pClass->_name, _dataModelId))
{
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><EFBFBD>ͬ");
return false;
}
//<2F><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ʾ<EFBFBD><CABE><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><E0A3AC><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
id = 0;
QString oldname = pClass->_strDisplayName;
while (_pDataManager_ref->findobjectByNameInDatamodel(pClass->_baseType, "displayName", pClass->_strDisplayName, _dataModelId))
{
id++;
pClass->_strDisplayName = oldname + QString::number(id);
}
oldname = pClass->_strDisplayName;
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
id = 0;
if (_pDataManager_ref->findobjectByNameInDatamodel(g_TYPE_DATAPACK, "displayName", pClass->_strDisplayName, _dataModelId))
{
id++;
pClass->_strDisplayName = oldname + QString::number(id);
}
pClass->_id = -1;
// if (pClass->_type != g_RELATED_CLASS)
// {
// pClass->reName();
// }
DPData* pOldParent = pClass->_parent;
if (pOldDst->addChild(pClass))
{
pOldParent->_childrenMap.remove(oldMapId);//<2F><>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
_pDataManager_ref->insertDataMap(DataManager::DataType::dataClass, pClass->_id, pClass);
_importClassCount++;
dataMark.insert(pClass->_name, PROCESSED);
QMap<unsigned int, DPData*> tmpMap = pClass->_childrenMap;
pClass->_childrenMap.clear();
QMap<unsigned int, DPData*>::iterator it = tmpMap.begin();
while (it != tmpMap.end())
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DPData* pData = pClass->hasSameNameChild("name", (*it)->_name);
if (pData)
{//<2F><>ͬ<EFBFBD><CDAC><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
DataAttribute* pNew = qobject_cast<DataAttribute*>(*it);
importExcelData(pNew, qobject_cast<DataAttribute*>(pData));
pNew->_id = pData->_id; //<2F><><EFBFBD><EFBFBD>id,<2C><>ϵ<EFBFBD><CFB5><EFBFBD>Բ<EFBFBD><D4B2>ҹ<EFBFBD>ϵ<EFBFBD><CFB5>ʱʹ<CAB1><CAB9>
}
else
{
(*it)->_id = -1;
DataAttribute* pNew = qobject_cast<DataAttribute*>(*it);
pNew->checkImportAttributeName(pClass);
if (pClass->addChild(*it))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
_pDataManager_ref->insertDataMap(DataManager::DataType::dataAttribute, (*it)->_id, (*it));
_importAttributeCount++;
}
else
{
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return false;
}
}
it++;
// /*<2A>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// int id = 0;
// QString newName = pAtt->_strDisplayName;
// while (pClass->hasSameNameChild("displayName", newName, true))
// {
// LOG(INFO) << CommonHelper::utf8ToStdString("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
// id += 1;
// newName = pAtt->_strDisplayName + QString::number(id);
// }
// pAtt->_strDisplayName = newName;
}
}
else
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʧ<CFA2>ܣ<EFBFBD><DCA3><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD><EFBFBD>Ϣɾ<CFA2><C9BE>
return false;
}
}
}
else
{
//Ϊ<><CEAA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
DataPack* pPack = qobject_cast<DataPack*>(pData);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
int id = 0;
while (_pDataManager_ref->findobjectByNameInDatamodel(pPack->_baseType, "displayName", pPack->_strDisplayName, _dataModelId) != nullptr)
{
id += 1;
pPack->_strDisplayName = pPack->_strDisplayName + QString::number(id);
}
if (pPack->_bIsChildPack)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
int oldId = pPack->_id;
pPack->_parent->_childrenMap.remove(oldId);
pPack->_id = -1;
//<2F><>ģ<EFBFBD><C4A3>
if (pOldDst->addChild(pPack))
{
pPack->_parent = pOldDst;
_pDataManager_ref->insertDataMap(DataManager::DataType::dataPack, pPack->_id, pPack);
pOldDst = pPack;
_importPackCount++;
dataMark.insert(pPack->_name, PROCESSED);
}
else
{
//<2F>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return false;
}
}
else
{
//<2F><>ģ<EFBFBD>飬ֱ<E9A3AC>ӹҵ<D3B9>Ŀ<EFBFBD><C4BF>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>
DPData* pdatamodel = _pDataManager_ref->findObjectById(DataManager::DataType::dataModel, _dataModelId);
pPack->_parent->_childrenMap.remove(pPack->_id);
pPack->_parent = pdatamodel;
pPack->_id = -1;
if (pdatamodel->addChild(pPack))
{
_pDataManager_ref->insertDataMap(DataManager::DataType::dataPack, pPack->_id, pPack);
pOldDst = pPack;
_importPackCount++;
dataMark.insert(pPack->_name, PROCESSED);
}
else
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳɹ<D3B3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ɾ<EFBFBD><C9BE>
return false;
}
}
}
}
return true;
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ*/
bool TransformExcel::addDataPackToTree(QList<QStringList>& result)
{
if (CommonHelper::compareQStringlist(result[0], packHead))
{
//<2F><>ͷ<EFBFBD><CDB7>Ԥ<EFBFBD><D4A4>һ<EFBFBD><D2BB>
for (int i = 1; i < result.size(); i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
DataPack* pNewPack = new DataPack();
if (!loadDataPack(result[i], pNewPack))
{
delete pNewPack;
pNewPack = nullptr;
return false;
}
if (result[i][0] == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>")
{
//ֱ<>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>
pNewPack->_bIsChildPack = false;
pNewPack->_parent = &newTreeRoot;
pNewPack->_id = index; //<2F><>ʱid
newTreeRoot._childrenMap.insert(index, pNewPack);
}
else
{
QString name = result[i][0];
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD>¹<EFBFBD>
if (mapDataPack.contains(name))
{
pNewPack->_bIsChildPack = true;
pNewPack->_parent = mapDataPack[name];
pNewPack->_id = index;//<2F><>ʱid
mapDataPack[name]->_childrenMap.insert(index, pNewPack);
}
else
{
//<2F>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD>");
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD>", 2);
delete pNewPack;
pNewPack = nullptr;
return false;
}
}
dataMark.insert(pNewPack->_name, 0);
mapDataPack.insert(pNewPack->_name, pNewPack);
index++;
}
return true;
}
else
{
//<2F><><EFBFBD><EFBFBD>excel<65><6C><EFBFBD>ı<EFBFBD>ͷ<EFBFBD><CDB7>Ԥ<EFBFBD>һ<E8B2BB><D2BB>,<2C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣬱<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>");
return false;
}
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ*/
bool TransformExcel::addDataClassToTree(QList<QStringList>& result)
{
if (CommonHelper::compareQStringlist(result[0], dataClassHead))
{
//<2F><>Ԥ<EFBFBD><D4A4>һ<EFBFBD><D2BB>
for (int i = 1; i < result.size(); i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DataClass* pNewClass = new DataClass();
if (!loadDataClass(result[i], pNewClass))
{
delete pNewClass;
pNewClass = nullptr;
return false;
}
QString parentName = result[i][0];
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD>¹<EFBFBD>
if (mapDataPack.contains(parentName))
{
pNewClass->_parent = mapDataPack[parentName];
pNewClass->_id = index; //<2F><>ʱ id
mapDataPack[parentName]->_childrenMap.insert(index, pNewClass);
mapDataClass.insert(pNewClass->_name, pNewClass);
dataMark.insert(pNewClass->_name, 0);
index++;
}
else
{
QString msg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> " + pNewClass->_name + "<EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD> "+ parentName +"<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>";
//<2F>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
LOG(INFO) << CommonHelper::qstringToStdString(msg);
CommonHelper::message(msg, 2);
delete pNewClass;
pNewClass = nullptr;
return false;
}
}
return true;
}
else
{
//<2F><>Ԥ<EFBFBD>һ<E8B2BB><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>д<EFBFBD>", 2);
return false;
}
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ*/
bool TransformExcel::addDataAttributetoTree(QList<QStringList>& result)
{
if (CommonHelper::compareQStringlist(result[0], attributeHead))
{
//<2F><>Ԥ<EFBFBD><D4A4>һ<EFBFBD><D2BB>
for (int i = 1; i < result.size(); i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DataAttribute* pNewAttribute = new DataAttribute();
if (!loadDataAttribute(result[i], pNewAttribute))
{
delete pNewAttribute;
pNewAttribute = nullptr;
return false;
}
QString parentName = result[i][0];
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD>¹<EFBFBD>
if (mapDataClass.contains(parentName))
{
pNewAttribute->_parent = mapDataClass[parentName];
pNewAttribute->_id = index; //<2F><>ʱid
mapDataClass[parentName]->_childrenMap.insert(index, pNewAttribute);
// dataMark.insert(pNewAttribute->_name, 0);
}
else
{
//<2F>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
delete pNewAttribute;
pNewAttribute = nullptr;
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
QString msg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + parentName;
CommonHelper::message(msg, 2);
return false;
}
// loadDataAttribute(result[i], pNewAttribute);
index++;
}
}
else
{
//<2F><>Ԥ<EFBFBD>һ<E8B2BB><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 2);
return false;
}
return true;
}
//excel<65><6C><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool TransformExcel::loadDataPack(const QStringList& data, DataPack* pData)
{
//<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
pData->_name = data[1];
if (pData->_name == " ")
{
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶΪ<EFBFBD><EFBFBD>", 2);
return false;
}
QString msg;
if (pData->checkNameillegal(msg))
{
CommonHelper::message(msg, 2);
return false;
}
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
pData->setDisplayName(data[2]);
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pData->setType((data[3]).toInt());
if (data[3] == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
{
pData->setType(1);
}
else if (data[3] == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
{
pData->setType(0);
}
else if (data[3] == "Ĭ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>")
{
pData->setType(2);
// LOG(INFO) << CommonHelper::utf8ToStdString("Ĭ<><C4AC>ģ<EFBFBD><C4A3>");
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>룺ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",2);
return false;
}
//<2F><><EFBFBD><EFBFBD>
pData->setDes(data[4]);
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>1.0
if (data[5] == "<EFBFBD><EFBFBD>")
{
pData->setIsGenerateTable(1);
}
else if (data[5] == "<EFBFBD><EFBFBD>")
{
pData->setIsGenerateTable(0);
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>룺ģ<EFBFBD><EFBFBD> <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD> ", 2);
return false;
}
return true;
}
//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool TransformExcel::loadDataClass(const QStringList& data, DataClass* pData)
{
//<2F>ϲ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
pData->_name = data[1];
if (pData->_name == " ")
{
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶΪ<EFBFBD><EFBFBD>", 2);
return false;
}
QString msg;
if ( !pData->checkNameillegal(msg) || !pData->checkLetter(msg, 0) )
{
CommonHelper::message(msg, 2);
return false;
}
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
pData->_strDisplayName = data[2];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (data[3] == "<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
{
pData->_type = 1;
//<2F><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A3AC>rename
pData->reName();
if (!pData->checkNameSize(3,128,msg) || !pData->checkLetter(msg,2))
{
CommonHelper::message(msg, 2);
return false;
}
}
else if (data[3] == "<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
{
pData->_type = 2;
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD> ", 2);
return false;
}
//<2F><><EFBFBD><EFBFBD>
pData->_strDescription = data[4];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (data[5] == "n")
{
pData->_wCountType = 0;
}
else if (data[5] == "1")
{
pData->_wCountType = 1;
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ", 2);
return false;
}
return true;
}
//ÿ<><C3BF>excel<65><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>
bool TransformExcel::loadDataAttribute(const QStringList& data, DataAttribute* pData)
{
QString errorhead = " <20><><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6>" + data[1] + "<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" ;
QString error;
//<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
pData->_name = data[1];
QString msg;
if (pData->_name == " ")
{
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶΪ<EFBFBD><EFBFBD>", 2);
return false;
}
if ( !pData->checkNameillegal(msg) || !pData->checkLetter(msg, 0))
{
CommonHelper::message(msg, 2);
return false;
}
else
{
pData->reName();
if (!pData->checkNameSize(2, 128, msg) || !pData->checkLetter(msg, 1))
{
CommonHelper::message(msg, 2);
return false;
}
}
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
pData->_strDisplayName = data[2];
//<2F><><EFBFBD><EFBFBD>
pData->_strDescription = data[3];
//Ĭ<><C4AC>ֵ
pData->_strDefaultValue = data[4];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD>1 ʵ<><CAB5>2 <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>3 char* double *
QString type = data[5].trimmed();
if (type == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
{
pData->_wDataType = MNORMALCOL_TYPE_INT;
}
else if (type == "ʵ<EFBFBD><EFBFBD>")
{
pData->_wDataType = MNORMALCOL_TYPE_DOUBLE;
}
else if (type == "<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>")
{
pData->_wDataType = MNORMALCOL_TYPE_STRING;
}
else if (type == "char*")
{
pData->_wDataType = MNORMALCOL_TYPE_CHARPTR;
}
else if (type == "double*")
{
pData->_wDataType = MNORMALCOL_TYPE_DOUBLEPTR;
}
else
{
error = errorhead + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>";
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel:"+error);
CommonHelper::message(error, 2);
return false;
}
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if (!CommonHelper::convertExcelboolValue(data[6].trimmed(), pData->_wIsIndex))
{
error = errorhead + " <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>";
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel:"+ error);
CommonHelper::message(error, 2);
return false;
}
//<2F>Ƿ<EFBFBD>Ψһ
if (!CommonHelper::convertExcelboolValue(data[7].trimmed(), pData->_wIsOnly))
{
error = errorhead + " <20>Ƿ<EFBFBD>Ψһ ֵ<><D6B5><EFBFBD><EFBFBD>";
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel:" + error);
CommonHelper::message(error, 2);
return false;
}
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if (!CommonHelper::convertExcelboolValue(data[8].trimmed(), pData->_wIsAutoincrement))
{
error = errorhead + " <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>";
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel: " + error);
CommonHelper::message(error, 2);
return false;
}
//<2F><><EFBFBD>󳤶<EFBFBD>
CommonHelper::convertExcelInt(data[9].trimmed(), pData->_wMaxLength);
//<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
CommonHelper::convertExcelInt(data[10].trimmed(), pData->_wMinLength);
//<2F><>ֵλ<D6B5><CEBB>
CommonHelper::convertExcelInt(data[11].trimmed(), pData->_wNumLength);
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
CommonHelper::convertExcelInt(data[12].trimmed(), pData->_wNumPresision);
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CommonHelper::convertExcelboolValue(data[13].trimmed(), pData->_wIsFindKey);
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
if (!CommonHelper::convertExcelboolValue(data[14].trimmed(), pData->_isPrimaryKey))
{
error = errorhead + " <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>";
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel: "+ error);
CommonHelper::message(error, 2);
return false;
}
//<2F><><EFBFBD>Թ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD> <20><>0 <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>; 1Ϊ1<CEAA><31>1;2Ϊ1:n
if (data[15] == "<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD>
if (pData->illegalName(msg))
{
CommonHelper::message(msg, 2);
return false;
}
pData->_FKType = 0;
if (data[16] != " ")
{
error = errorhead + " <20><>Ӧ<EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ͨ<EFBFBD><CDA8><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LOG(INFO) << CommonHelper:: qstringToStdString("importDatamodel: " + error);
CommonHelper::message(error, 2);
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>ȡ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return true;
}
else if (data[15] == "1:1")
{
pData->_FKType = 1;
if (data[16] == " ")
{
error = errorhead + " ȱ<>ٹ<EFBFBD><D9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
//<2F>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel: " + error);
CommonHelper::message(error, 2);
return false;
}
else
{
checkImportRelateAttribute(pData, data[16]);
}
}
else if (data[15] == "1:n")
{
pData->_FKType = 2;
if (data[16] == " ")
{
//<2F>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: <20><><EFBFBD>Ա<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD> ", 2);
return false;
}
else
{
checkImportRelateAttribute(pData, data[16]);
}
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: <20><><EFBFBD>Ա<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD> ", 2);
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
//<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ģ<EFBFBD><C4A3><EFBFBD>в<EFBFBD><D0B2>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>id<69><64><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
// QString name = data[16];
// DPData* pClass = _pDataManager_ref->findobjectByNameInDatamodel(g_TYPE_DATACLASS,"name", name, _dataModelId);
// if (pClass)
// {
// pData->_wFkTableID = pClass->_id;
// }
// else
// {
// pData->_fkname = name;
// }
return true;
}
void TransformExcel::checkImportRelateAttribute(DataAttribute* pData, const QString name)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
//<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ģ<EFBFBD><C4A3><EFBFBD>в<EFBFBD><D0B2>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>id<69><64><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
DPData* pClass = _pDataManager_ref->findobjectByNameInDatamodel(g_TYPE_DATACLASS, "name", name, _dataModelId);
if (pClass)
{
pData->_wFkTableID = pClass->_id;
}
else
{
pData->_fkname = name;
relAttList.append(pData);
}
}
void TransformExcel::importExcelData(DataPack* pNew, DataPack* pOld)
{
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
if (pNew->_strDisplayName != "")
{
pOld->setDisplayName(pNew->getDisplayName());
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>оͼ<D0BE><CDBC><EFBFBD><EFBFBD><EFBFBD>
checkCoverName(pOld, pOld->_strDisplayName);
}
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pNew->_folderType != -1)
{
pOld->_folderType = pNew->_folderType;
}
//<2F><><EFBFBD><EFBFBD>
if (pNew->_strDescription != "")
{
pOld->setDes(pNew->getDes());
}
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>
if (pNew->_bIsGenerateTable != -1)
{
pOld->_bIsGenerateTable = pNew->_bIsGenerateTable;
}
pOld->saveSelf();
}
void TransformExcel::importExcelData(DataClass* pNew, DataClass* pOld)
{
//<2F><>new<65><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>µ<EFBFBD>old,<2C><><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6>ͬ
if (pNew->getdisplayName() != "")
{
pOld->setdisplayName(pNew->getdisplayName());
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>оͼ<D0BE><CDBC><EFBFBD><EFBFBD><EFBFBD>
checkCoverName(pOld, pOld->_strDisplayName);
}
if (pNew->getType() != 0)
{
pOld->setType(pNew->getType());
}
if (pNew->getDescription() != "")
{
pOld->setDescription(pNew->getDescription());
}
if (pNew->getCountType() != 0)
{
pOld->setCountType(pNew->getCountType());
}
pOld->saveSelf();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
//pNew->_parent->_childrenMap.remove(pNew->_id);
}
//<2F><>new<65><77><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void TransformExcel::importExcelData(DataAttribute* pNew, DataAttribute* pOld)
{
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
if (pNew->getDisplayName() != "")
{
pOld->setDisplayName(pNew->getDisplayName());
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>оͼ<D0BE><CDBC><EFBFBD><EFBFBD><EFBFBD>
DPData* sameData = nullptr;
int id = 0;
QString oldname = pOld->_strDisplayName;
while (sameData = pOld->_parent->hasSameNameChild("displayName", pOld->_strDisplayName))
{
if (sameData != pOld)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>
id++;
pOld->_strDisplayName = oldname + QString::number(id);
sameData = nullptr;
}
else
{
break;
}
}
}
//<2F><><EFBFBD><EFBFBD>
if (pNew->getDes() != "")
{
pOld->setDes(pNew->getDes());
}
//Ĭ<><C4AC>ֵ
if (pNew->_strDefaultValue != "")
{
pOld->setDefaultValue(pNew->_strDefaultValue);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pNew->_wDataType != 0)
{
pOld->setDataType(pNew->_wDataType);
}
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if (pNew->_wIsIndex != -1)
{
pOld->_wIsIndex = pNew->_wIsIndex;
}
//<2F>Ƿ<EFBFBD>Ψһ
if (pNew->_wIsOnly != -1)
{
pOld->_wIsOnly = pNew->_wIsOnly;
}
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if (pNew->_wIsAutoincrement != -1)
{
pOld->_wIsAutoincrement = pNew->_wIsAutoincrement;
}
//<2F><><EFBFBD>󳤶<EFBFBD>
if (pNew->_wMaxLength != -1)
{
pOld->_wMaxLength = pNew->_wMaxLength;
}
//<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
if (pNew->_wMinLength != -1)
{
pOld->_wMinLength = pNew->_wMinLength;
}
//<2F><>ֵλ<D6B5><CEBB>
if (pNew->_wNumLength != -1)
{
pOld->_wNumLength = pNew->_wNumLength;
}
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
if (pNew->_wNumPresision != -1)
{
pOld->_wNumPresision = pNew->_wNumPresision;
}
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pNew->_wIsFindKey != -1)
{
pOld->_wIsFindKey = pNew->_wIsFindKey;
}
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
if (pNew->_isPrimaryKey != -1)
{
pOld->_isPrimaryKey = pNew->_isPrimaryKey;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pNew->_FKType != -1)
{
pOld->_FKType = pNew->_FKType;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pNew->_wFkTableID != -1)
{
pOld->_wFkTableID = pNew->_wFkTableID;
}
pOld->saveSelf();
}
void TransformExcel::checkCoverName(DPData* pOld,QString& name)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>оͼ<D0BE><CDBC><EFBFBD><EFBFBD><EFBFBD>
int id = 0;
QString oldname = name;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DPData* sameData = nullptr;
while (sameData = _pDataManager_ref->findobjectByNameInDatamodel(pOld->_baseType, "displayName", name, _dataModelId))
{
if (sameData != pOld)
{
//ͬ<><CDAC><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>Լ<EFBFBD>
id++;
name = oldname + QString::number(id);
sameData = nullptr;
}
else
{
break;
}
}
}
bool TransformExcel::proccessAttribute(DataClass* pNewClass, DataClass* pOldClass)
{
QMap<unsigned int, DPData*>::iterator it = pNewClass->_childrenMap.begin();
while (it != pNewClass->_childrenMap.end())
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DPData* pData = pOldClass->hasSameNameChild("name", (*it)->_name);
DataAttribute* pNew = qobject_cast<DataAttribute*>(*it);
if (pData)
{
DataAttribute* pOld = qobject_cast<DataAttribute*>(pData);
importExcelData(pNew, pOld);
pNew->_id = pOld->_id; //<2F><><EFBFBD><EFBFBD>id,<2C><>ϵ<EFBFBD><CFB5><EFBFBD>Բ<EFBFBD><D4B2>ҹ<EFBFBD>ϵ<EFBFBD><CFB5>ʱʹ<CAB1><CAB9>
_importAttributeCount++;
}
else
{
/*<2A>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pNew->checkImportAttributeName( pOldClass);
//<2F><><EFBFBD><EFBFBD>ԭid
int oldId = (*it)->_id;
//<2F><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
(*it)->_parent = pOldClass;
if (pOldClass->addChild(*it))
{ //<2F>ɹ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
// pNewClass->_childrenMap.remove(oldId);
_pDataManager_ref->insertDataMap(DataManager::DataType::dataAttribute, (*it)->_id, (*it)); //1008test
_importAttributeCount++;
}
else
{
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>",2);
//ʧ<><CAA7>
return false;
}
}
it++;
}
pNewClass->_childrenMap.clear();
return true;
}
// void TransformExcel::accessJsonNode(json& para)
// {
// auto child = para["children"];
// if (child.is_null())
// {
// return;
// }
// for (auto& subChild: child)
// {
// int id = subChild["id"];
// int classType = subChild["classType"];
// if (classType == g_TYPE_DATACLASS)
// {
// DPData* pdata = _pDataManager_ref->findObjectById(DataManager::DataType::dataClass, id);
// classList.append(qobject_cast<DataClass*>(pdata));
// //<2F>ٰ<EFBFBD><D9B0>¹<EFBFBD><C2B9><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
// QMap<unsigned int, DPData*>::iterator it = pdata->_childrenMap.begin();
// while (it!= pdata->_childrenMap.end())
// {
// attributeList.append(qobject_cast<DataAttribute*>(*it));
// it++;
// }
// }
// else if (classType == g_TYPE_DATAPACK)
// {
// DPData* pData = _pDataManager_ref->findObjectById(DataManager::DataType::dataPack, id);
// DataPack* pPack = qobject_cast<DataPack*>(pData);
// //<2F><><EFBFBD><EFBFBD>packlist <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȼӸ<C8BC>ģ<EFBFBD>
// packList.append(pPack);
// }
//
// accessJsonNode(subChild);
// }
// }
bool TransformExcel::exportData(json& parameter)
{
//<2F><><EFBFBD><EFBFBD>sheet
excel.clearAllSheet();
//datamodelֻ<6C><D6BB><EFBFBD>ܻ<EFBFBD><DCBB><EFBFBD>һ<EFBFBD><D2BB>
// auto data = parameter["data"];
// _dataModelId = data["id"];
// auto packarray = data["children"];
// for (auto& pack : packarray)
// { //<2F><>ģ<EFBFBD><C4A3>
// int id = pack["id"];
// DPData* pData = _pDataManager_ref->findObjectById(DataManager::DataType::dataPack, id);
// if (pData)
// {
// DataPack* pPack = qobject_cast<DataPack*>(pData);
// //<2F><><EFBFBD><EFBFBD>packlist <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȼӸ<C8BC>ģ<EFBFBD>
// packList.append(pPack);
// accessJsonNode(pack);
// }
// else
// {
// //<2F>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
// }
//
// }
auto data = parameter["data"];
auto delRelAttr = data["delRelAttr"];//true Ϊɾ<CEAA><C9BE><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
auto dataArray = data["data"];
for (auto& datanode : dataArray)
{
int id = datanode["id"];
int classtype = datanode["classType"];
insertImportList(classtype, id);
int parentId = datanode["parentId"];
int parentType = datanode["parentClassType"];
insertImportList(parentType, parentId);
}
insertImportAtt(delRelAttr);
writeDataPack(packMapEx);
writeDataClass(classMapEx);
writeDataAttribute(attributeMapEx);
return true;
}
void TransformExcel::insertImportAtt(bool delRelAttr)
{
QList<int> keylist = classMapEx.keys();
for (int i = 0; i < keylist.size(); i++)
{
int key = keylist[i];
DataClass* pClass = classMapEx[key];
if (pClass->_childrenMap.size() > 0)
{
QMap<unsigned int, DPData*>::iterator it = pClass->_childrenMap.begin();
while (it != pClass->_childrenMap.end())
{
DataAttribute* pAtt = qobject_cast<DataAttribute*>(*it);
if (pAtt->_FKType != 0)
{
//Ϊ<><CEAA>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
if (delRelAttr && !classMapEx.contains(pAtt->_wFkTableID))
{
//<2F><><EFBFBD>ù<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
}
else
{
attributeMapEx.insert(pAtt->_id, pAtt);
}
}
else
{
attributeMapEx.insert(pAtt->_id, pAtt);
}
it++;
}
}
}
}
void TransformExcel::insertImportList(int type, int id)
{
if (type == g_TYPE_DATAPACK)
{
if (!packMapEx.contains(id))
{
DataPack* pData = qobject_cast<DataPack*>(_pDataManager_ref->findObjectById(DataManager::DataType::dataPack, id));
packMapEx.insert(id, pData);
}
}
else if (type == g_TYPE_DATACLASS)
{
if (!classMapEx.contains(id))
{
DataClass* pData = qobject_cast<DataClass*>(_pDataManager_ref->findObjectById(DataManager::DataType::dataClass, id));
classMapEx.insert(id, pData);
}
}
}
//д<><D0B4>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>
void TransformExcel::writeDataPack(QMap<int, DataPack*>& mapdata)
{
QList<QStringList> input;
input.append(packHead);
QList<int> keylist = mapdata.keys();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < keylist.size(); i++)
{
QStringList dataValue;
int key = keylist[i];
DataPack* pCurData = mapdata[key];
//<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>ģ<EFBFBD><C4A3>
if (pCurData->_bIsChildPack)
{
dataValue.append(pCurData->_parent->_name);
}
else
{
//Ϊ<><CEAA><EFBFBD><EFBFBD>ģ<EFBFBD>͸<EFBFBD>ģ<EFBFBD><C4A3>
dataValue.append("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>");
}
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
dataValue.append(pCurData->_name);
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
dataValue.append(pCurData->_strDisplayName);
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pCurData->_folderType == 1)
{
dataValue.append("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
else if (pCurData->_folderType == 0)
{
dataValue.append("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
else if (pCurData->_folderType == 2)
{
dataValue.append("Ĭ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>");
}
//<2F><><EFBFBD><EFBFBD>
dataValue.append(pCurData->getDes());
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>
if (pCurData->_bIsGenerateTable)
{
dataValue.append("<EFBFBD><EFBFBD>");
}
else
{
dataValue.append("<EFBFBD><EFBFBD>");
}
input.append(dataValue);
}
//д<><D0B4>excel
excel.writeSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>", input);
}
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void TransformExcel::writeDataClass(QMap<int, DataClass*>& mapdata)
{
QList<QStringList> input;
input.append(dataClassHead);
QList<int> keylist = mapdata.keys();
//<2F><><EFBFBD><EFBFBD>
for (int i = 0; i < keylist.size(); i++)
{
QStringList dataValue;
int key = keylist[i];
DataClass* pCurData = mapdata[key];
//<2F>ϲ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
dataValue.append(pCurData->_parent->_name);
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
dataValue.append(pCurData->_name);
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
dataValue.append(pCurData->_strDisplayName);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pCurData->_type == 1)
{
dataValue.append("<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
else
{
dataValue.append("<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
//<2F><><EFBFBD><EFBFBD>
dataValue.append(pCurData->_strDescription);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pCurData->_wCountType == 0)
{
dataValue.append("n");
}
else
{
dataValue.append("1");
}
input.append(dataValue);
}
//д<><D0B4>excel
excel.writeSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", input);
}
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>
void TransformExcel::writeDataAttribute(QMap<int, DataAttribute*>& mapdata)
{
QList<QStringList> input;
input.append(attributeHead);
QList<int> keylist = mapdata.keys();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < keylist.size(); i++)
{
QStringList dataValue;
int key = keylist[i];
DataAttribute* pCurData = mapdata[key];
//<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
dataValue.append(pCurData->_parent->_name);
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
dataValue.append(pCurData->_name);
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
dataValue.append(pCurData->_strDisplayName);
//<2F><><EFBFBD><EFBFBD>
dataValue.append(pCurData->_strDescription);
//Ĭ<><C4AC>ֵ
dataValue.append(pCurData->_strDefaultValue);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pCurData->_wDataType == MNORMALCOL_TYPE_INT)
{
dataValue.append("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
else if (pCurData->_wDataType == MNORMALCOL_TYPE_STRING)
{
dataValue.append("<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>");
}
else if (pCurData->_wDataType == MNORMALCOL_TYPE_DOUBLE)
{
dataValue.append("ʵ<EFBFBD><EFBFBD>");
}
else if (pCurData->_wDataType == MNORMALCOL_TYPE_CHARPTR)
{
dataValue.append("char*");
}
else if (pCurData->_wDataType == MNORMALCOL_TYPE_DOUBLEPTR)
{
dataValue.append("double*");
}
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
dataValue.append(CommonHelper::convertPropertyValue(pCurData->_wIsIndex));
//<2F>Ƿ<EFBFBD>Ψһ
dataValue.append(CommonHelper::convertPropertyValue(pCurData->_wIsOnly));
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
dataValue.append(CommonHelper::convertPropertyValue(pCurData->_wIsAutoincrement));
//<2F><><EFBFBD>󳤶<EFBFBD>
dataValue.append(QString::number(pCurData->_wMaxLength));
//<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
dataValue.append(QString::number(pCurData->_wMinLength));
//<2F><>ֵλ<D6B5><CEBB>
dataValue.append(QString::number(pCurData->_wNumLength));
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
dataValue.append(QString::number(pCurData->_wNumPresision));
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dataValue.append(CommonHelper::convertPropertyValue(pCurData->_wIsFindKey));
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
dataValue.append(CommonHelper::convertPropertyValue(pCurData->_isPrimaryKey));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pCurData->_FKType == 0)
{
dataValue.append("<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
else if (pCurData->_FKType == 1)
{
dataValue.append("1:1");
}
else if (pCurData->_FKType == 2)
{
dataValue.append("1:n");
}
//<2F><><EFBFBD>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
DPData* pData = _pDataManager_ref->findObjectById(DataManager::DataType::dataClass, pCurData->_wFkTableID);
if (pData)
{
dataValue.append(pData->_name);
}
input.append(dataValue);
}
//д<><D0B4>excel
excel.writeSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", input);
}
////////////////////////////////////////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>excel<65><6C><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>excel<65>ļ<EFBFBD>
bool TransformExcel::openFile(QString filePath)
{
return excel.OpenFile(filePath);
}
// <20><><EFBFBD><EFBFBD>excel<65>ļ<EFBFBD>
void TransformExcel::closeFile(QString filePath)
{
excel.saveFile(filePath);
}
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ļ<EFBFBD>
void TransformExcel::backupDBFile()
{
SysManager& sysMgr = GetSysManager();
_srcFile = sysMgr._sysDBPath;
_midFile = sysMgr._sysDBPath.left(sysMgr._sysDBPath.lastIndexOf(".")+1) + "mid.dbp";
_bakFile = sysMgr._sysDBPath + ".bak";
QFileInfo dstfile(_bakFile);
if (dstfile.isFile())
{
QFile::remove(_bakFile);
}
bool ret = QFile::copy(_srcFile, _bakFile);
}
//<2F>ָ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ļ<EFBFBD><C4BC><EFBFBD>
bool TransformExcel::rollBackDBFile()
{
// bool ret = QFile::remove(_srcFile);
QFile srcfile(_srcFile);
QFile dstfile(_bakFile);
QFileInfo midfile(_midFile);
if (_pDataManager_ref->pTheDBPlatform)
{
delete _pDataManager_ref->pTheDBPlatform;
_pDataManager_ref->pTheDBPlatform = nullptr;
if (!srcfile.remove())
{
QString msg = "DB remove " + _srcFile + " failed";
LOG(ERROR) << CommonHelper::qstringToStdString(msg);
LOG(ERROR) << CommonHelper::qstringToStdString(srcfile.errorString());
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>ݻع<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 2);
return false;
}
else
{
if (!dstfile.rename(_srcFile))
{
LOG(ERROR) << CommonHelper::utf8ToStdString("DB rollback failed ");
LOG(ERROR) << CommonHelper::qstringToStdString(dstfile.errorString());
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>ݻع<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 2);
return false;
}
else
{
if (_pDataManager_ref->pTheDBPlatform)
{
delete _pDataManager_ref->pTheDBPlatform;
_pDataManager_ref->pTheDBPlatform = nullptr;
}
_pDataManager_ref->pTheDBPlatform = new DBPlatformSpace::DBPlatformNew(CommonHelper::qstringToStdString(_srcFile));
if ("OK" == DBPlatformSpace::DBPlatformNew::getCurrPlatformStatus())
{
LOG(INFO) << CommonHelper::utf8ToStdString("link bakDB success");
_pDataManager_ref->_dbConnected = true;
}
return true;
}
}
// if (midfile.isFile())
// {
// QFile::remove(_midFile);
// }
// bool ret = QFile::copy(_bakFile, _midFile);
// _pDataManager_ref->pTheDBPlatform = new DBPlatformSpace::DBPlatformNew(CommonHelper::qstringToStdString(_midFile));
// if ("OK" == DBPlatformSpace::DBPlatformNew::getCurrPlatformStatus())
// {
// LOG(INFO) << CommonHelper::utf8ToStdString("link midDB success");
// if (!srcfile.remove())
// {
// QString msg = "DB remove " + _srcFile + " failed";
// LOG(ERROR) << CommonHelper::qstringToStdString(msg);
// LOG(ERROR) << CommonHelper::qstringToStdString(srcfile.errorString());
// }
// else
// {
// if( !dstfile.rename(_srcFile))
// {
// LOG(ERROR) << CommonHelper::utf8ToStdString("DB rollback failed ");
// LOG(ERROR) << CommonHelper::qstringToStdString(dstfile.errorString());
// return false;
// }
// else
// {
// if (_pDataManager_ref->pTheDBPlatform)
// {
// delete _pDataManager_ref->pTheDBPlatform;
// _pDataManager_ref->pTheDBPlatform = nullptr;
// }
// _pDataManager_ref->pTheDBPlatform = new DBPlatformSpace::DBPlatformNew(CommonHelper::qstringToStdString(_srcFile));
// if ("OK" == DBPlatformSpace::DBPlatformNew::getCurrPlatformStatus())
// {
// LOG(INFO) << CommonHelper::utf8ToStdString("link bakDB success");
// _pDataManager_ref->_dbConnected = true;
// //ɾ<><C9BE><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD>ݿ<EFBFBD>
// if (midfile.isFile())
// {
// QFile::remove(_midFile);
// }
// }
// return true;
// }
// }
//
// }
}
return false;
}