DPS/DataPlatform/ProjectData.cpp

423 lines
10 KiB
C++
Raw Normal View History

2025-06-23 10:41:33 +08:00
#pragma execution_character_set("utf-8")
#include "ProjectData.h"
#include "DataModelData.h"
#include "DataManager.h"
#include "M_ProjectDAO.h"
#include "M_EntityModelDAO.h"
#include "CommonDataPublic.h"
#include <QTime>
void static backupDAOData(DBPlatformSpace::M_ProjectDAO& src, DBPlatformSpace::M_ProjectDAO& dst)
{
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ĵ<DEB8>ֵ
dst._name = src._name;
dst._type = src._type;
dst._author = src._author;
}
void static restoreProjectData(DBPlatformSpace::M_ProjectDAO& src, ProjectData& dst)
{
//<2F><>Ҫ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
dst._name = CommonHelper::stringToQstring(src._name);
dst._type = src._type;
dst._author = CommonHelper::stringToQstring(src._author);
}
ProjectData::ProjectData()
{
}
ProjectData::~ProjectData()
{
}
QString ProjectData::getAuthor() const
{
return _author;
}
void ProjectData::setAuthor(QString author)
{
this->_author = author;
}
QString ProjectData::getCreateTime() const
{
return _createTime;
}
void ProjectData::setCreateTime(QString createTime)
{
this->_createTime = createTime;
}
QString ProjectData::getUpdateTime() const
{
return _updateTime;
}
void ProjectData::setUpdateTime(QString updateTime)
{
this->_updateTime = updateTime;
}
bool ProjectData::getFocus() const
{
return _focus;
}
void ProjectData::setFocus(bool focus)
{
this->_focus = focus;
}
void ProjectData::removeChildinDPMap()
{
DataManager& mgr = GetDataRoot();
QMap<unsigned int, DPData*>::iterator it = _childrenMap.begin();
while (it != _childrenMap.end())
{
mgr.deleteInDataMap(DataManager::DataType::dataModel, (*it)->_id);
qobject_cast<DataModelData*>(*it)->removeChildinDPMap();
it++;
}
}
bool ProjectData::saveSelf()
{
using namespace DBPlatformSpace;
M_ProjectDAO oldDaoData;
ResultMsg rm;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>*/
M_ProjectDAO* pDao = dynamic_cast<M_ProjectDAO*>(_pDBDAO);
if (pDao == nullptr)
{
pDao = new M_ProjectDAO();
_pDBDAO = pDao;
}
else
{
/*<2A><><EFBFBD><EFBFBD>DAO<41><4F><EFBFBD><EFBFBD>*/
backupDAOData(*pDao, oldDaoData);
}
pDao->_name = CommonHelper::qstringToStdString(this->_name);
pDao->_type = this->_type;
pDao->_focus = this->_focus;
pDao->_author = CommonHelper::qstringToStdString(this->_author);
pDao->_createTime = CommonHelper::qstringToStdString(this->_createTime);
pDao->_updateTime = CommonHelper::qstringToStdString(this->_updateTime);
rm = pDao->save();
if (rm.rCode == 0)
{
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::save success");
return true;
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::save failed");
LOG(ERROR) << rm.rMsg;
//<2F>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
restoreProjectData(oldDaoData, *this);
return false;
}
}
void ProjectData::loadData(DBPlatformSpace::DAO* pDao)
{
_pDBDAO = pDao;
//<2F><>DAO<41><4F><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>projectData<74><61><EFBFBD><EFBFBD>
DBPlatformSpace::M_ProjectDAO* pDAOData = dynamic_cast<DBPlatformSpace::M_ProjectDAO*>(_pDBDAO);
_id = pDAOData->_ID;
_name = CommonHelper::stringToQstring(pDAOData->_name);
_type = pDAOData->_type;
_focus = pDAOData->_focus;
_author = CommonHelper::stringToQstring(pDAOData->_author);
_createTime = CommonHelper::stringToQstring(pDAOData->_createTime);
_updateTime = CommonHelper::stringToQstring(pDAOData->_updateTime);
}
bool ProjectData::deleteSelf()
{
if (_pDBDAO)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD>ݿ<EFBFBD>ɾ<EFBFBD><C9BE>
DBPlatformSpace::ResultMsg rm = _pDBDAO->delself();
if (rm.rCode == 0)
{
//<2F><><EFBFBD>ݿ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>Ŀ<EFBFBD><C4BF>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
_parent->deleteChild(_id);
removeChildinDPMap();
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::delself success");
return true;
}
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::delself failed");
LOG(ERROR) << rm.rMsg;
return false;
}
else
{
return false;
}
}
void ProjectData::toJson(json& jsonObj, bool /*recursive*/)
{
jsonObj["id"] = _id;
jsonObj["author"] = CommonHelper::qstringToUtf8(getAuthor());
jsonObj["name"] = CommonHelper::qstringToUtf8(_name);
jsonObj["type"] = getType();
jsonObj["createTime"] = CommonHelper::qstringToUtf8(getCreateTime());
jsonObj["updateTime"] = CommonHelper::qstringToUtf8(getUpdateTime());
jsonObj["focus"] = getFocus();
}
/*<2A><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>*/
void ProjectData::getAllChildren(DPData* pManager)
{
using namespace DBPlatformSpace;
ResultMsg rm;
DataManager* pDManager = qobject_cast<DataManager*>(pManager);
M_ProjectDAO* pProject = dynamic_cast<M_ProjectDAO*>(_pDBDAO);
list<M_EntityModelDAO*> listDataModel;
rm = pProject->getEntityModelList(listDataModel);
if (rm.rCode != 0)
{
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::getEntityModelList failed");
LOG(ERROR) << rm.rMsg;
return;
}
if (listDataModel.size() != _childrenMap.size())
{
qDeleteAll(_childrenMap);
_childrenMap.clear();
}
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::getEntityModelList success");
for (list<M_EntityModelDAO*>::iterator it = listDataModel.begin(); it != listDataModel.end(); ++it)
{
int id = (*it)->_ID;
DataModelData* pNew = nullptr;
if (_childrenMap.contains(id))
{
_childrenMap.value(id)->loadData(*it);
}
else
{
pNew = new DataModelData();
pNew->loadData(*it);
pNew->_parent = this;
_childrenMap.insert(id, pNew);
//<2F><><EFBFBD><EFBFBD>model map
pDManager->insertDataMap(DataManager::DataType::dataModel, pNew->_id, pNew);
}
}
}
/*<2A>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>Ŀ*/
bool ProjectData::addChild(DPData* pNewData)
{
using namespace DBPlatformSpace;
ResultMsg rm;
DataModelData* pNewModelData = qobject_cast<DataModelData*>(pNewData);
pNewModelData->saveToDao();
M_EntityModelDAO* pNewModelDAO = dynamic_cast<M_EntityModelDAO*>(pNewData->_pDBDAO);
M_ProjectDAO* pProjectDAO = dynamic_cast<M_ProjectDAO*>(_pDBDAO);
rm = pProjectDAO->addEntityModel(pNewModelDAO);
if (rm.rCode == 0)
{
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::addEntityModel success");
pNewModelData->_id = pNewModelDAO->_ID;
pNewModelData->_version = pNewModelDAO->_version;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>ͳɹ<CDB3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>childMap
_childrenMap.insert(pNewData->_id, pNewData);
return true;
}
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::addEntityModel failed");
LOG(ERROR) << rm.rMsg;
return false;
}
bool ProjectData::deleteChild(unsigned int dataModelId)
{
_childrenMap.remove(dataModelId);
return true;
}
void ProjectData::getNewProperty(json& parameter, QVariantMap& valueMap)
{
auto data = parameter["data"];
if (!data["name"].is_null())
{
valueMap.insert("name", CommonHelper::utf8ToQString(data["name"]));
}
if (!data["author"].is_null())
{
valueMap.insert("author", CommonHelper::utf8ToQString(data["author"]));
}
if (!data["type"].is_null())
{
valueMap.insert("type", (int)data["type"]);
}
if (!data["focus"].is_null())
{
valueMap.insert("focus", (bool)data["focus"]);
}
}
void ProjectData::setNewData(json& parameter)
{
//<2F><>ǰʱ<C7B0><CAB1>
QString curTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm");
QVariantMap newValue;
getNewProperty(parameter, newValue);
newValue.insert("createTime", curTime);
newValue.insert("updateTime", curTime);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
setProperties(newValue);
}
void ProjectData::setEditData(json& parameter)
{
//<2F><EFBFBD><E0BCAD>Ŀ<EFBFBD><C4BF><EFBFBD>޸Ĺ<DEB8>ע״̬ʱ<CCAC><CAB1><EFBFBD><EFBFBD>
//<2F><><EFBFBD>޸<EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
// QString curTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm");
QVariantMap newValue;
getNewProperty(parameter, newValue);
// newValue.insert("updateTime", curTime);
setProperties(newValue);
}
bool ProjectData::getImportProjectList(QList<ProjectData*>& proList, QString importFilePath)
{
using namespace DBPlatformSpace;
ResultMsg rm;
list<M_ProjectDAO*> plist;
rm = M_ProjectDAO::getImportProjectList(plist, CommonHelper::qstringToStdString(importFilePath));
if (rm.rCode == 0)
{
//list<M_ProjectDAO*>ת<><D7AA><EFBFBD><EFBFBD> QList<ProjectData*>
for (list<M_ProjectDAO*>::iterator it = plist.begin(); it != plist.end(); ++it)
{
ProjectData* pProjecct = new ProjectData();
pProjecct->loadData(*it);
proList.append(pProjecct);
}
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::getImportProjectList success");
return true;
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::getImportProjectList failed");
LOG(ERROR) << rm.rMsg;
return false;
}
}
bool ProjectData::importData(json& parameter, QList<int>& projectIdlist)
{
using namespace DBPlatformSpace;
ResultMsg rm;
auto data = parameter["data"];
list<int> importIds;
for (auto j : data)
{
importIds.push_back(j.get<int>());
projectIdlist.append(j.get<int>());
}
SysManager& sysMgr = GetSysManager();
rm = M_ProjectDAO::importProject(CommonHelper::qstringToStdString(sysMgr._importFilePath), importIds);//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD>е<EFBFBD><D0B5><EFBFBD>Ŀ"
if (rm.rCode == 0)
{
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::importProject success");
return true;
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::importProject failed");
LOG(ERROR) << rm.rMsg;
return false;
}
}
bool ProjectData::exportData(json& parameter, QString exportPath)
{
DBPlatformSpace::ResultMsg rm;
auto data = parameter["data"];
list<int> projectIds;
for (auto j : data)
{
projectIds.push_back(j.get<int>());
}
rm = DBPlatformSpace::M_ProjectDAO::exportProject(projectIds, CommonHelper::qstringToStdString(exportPath));
if (rm.rCode == 0)
{
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::exportProject success");
return true;
}
else
{
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::exportProject failed");
LOG(ERROR) << rm.rMsg;
return false;
}
return true;
}
void ProjectData::findDatamodelByName(QString name, QList<DPData*>& modellist)
{
if (_childrenMap.size() == 0)
{
return;
}
QMap<unsigned int, DPData*>::iterator it = _childrenMap.begin();
while (it != _childrenMap.end())
{
if (name.compare((*it)->_name) == 0)
{
modellist.append((*it));
}
it++;
}
}
void ProjectData::setCurrentProject()
{
using namespace DBPlatformSpace;
M_ProjectDAO::setCurrProjectID(_id);
}
bool ProjectData::hasRepetitiveName(QString name, DataManager* pMgr)
{
QMap<unsigned int, DPData*>::iterator it;
it = pMgr->_childrenMap.begin();
while (it != pMgr->_childrenMap.end())
{
ProjectData* pData = qobject_cast<ProjectData*>(*it);
QString n = pData->property("name").toString();
if (n == name)
{
return true;
}
it++;
}
return false;
}