DiagramDesigner/diagramUtils/include/dataBase.h

132 lines
7.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef DATABASE_H
#define DATABASE_H
#include <QSqlDatabase>
#include <QObject>
#include <QUuid>
#include <QJsonObject>
#include "global.h"
#include "export.hpp"
class DIAGRAM_DESIGNER_PUBLIC DataBase
{
//Q_OBJECT
public:
DataBase();
~DataBase();
QSqlQuery executeSQL(const QString& strSQL, bool isDDl = false,const QVariantList& params = {}, bool useTranscation = false); //ddl:create,delete,alter etc
/**
* @brief 多条批量SQL语句执行接口
* @param sqlStatements SQL语句列表
* @param paramsList 参数列表要与SQL语句一一对应
*/
QSqlQuery executeBatchSQL(const QStringList& sqlStatements, bool createOrDrop = false,
const QList<QVariantList>& paramsList = QList<QVariantList>(), bool useTranscation = false);
static DataBase* GetInstance();
public:
bool insertPage(QString tag,QString name,int status,QJsonObject label,QJsonObject context,QString description,int op);
bool insertStation(int zoneId,QString name,QString description,bool isLocal,int op);
bool insertGrid(QString name,QString description,int op);
bool insertZone(int grid_id,QString name,QString description,int op);
bool insertTopologic(int page_id,QUuid uuid_from,QUuid uuid_to,int flag,QString description,int op);
bool insertBus_stability(int componentId,double resistance,bool anchor_v,double uv_alarm,double ov_alarm,bool anchor_i,double ui_alarm,double oi_alarm,int op);
bool updateBus_stability(int componentId,double resistance,bool anchor_v,double uv_alarm,double ov_alarm,bool anchor_i,double ui_alarm,double oi_alarm,int op);
busStability getBusStabilityById(int componentId);
/*********************************************************************************/
bool updateComponent(QUuid uuid,QString tag,QString name,QJsonObject context);
bool insertComponent(QUuid uuid,QString modelName,QString nspath,QString tag,QString name,QString description,QString grid,QString zone,QString station,int type,bool inService,int state,QJsonObject connected_bus,QJsonObject label,QJsonObject context,int page_id,int op);
bool insertDynamicProperty(QUuid uuid,groupStateValue groupValue);
bool updateDynamicProperty(QUuid uuid,groupStateValue groupValue);
componentInfo getComponentInfoByUuid(QString uuid);
QList<componentInfo> getAllComponents();
bool componentExist(QString uuid);
bool deleteComponent(QString uuid);
/*********************************************************************************/
int getPageIdByName(QString name);
bool updatePage(QString tag,QString name,QJsonObject context);
QJsonObject getPageContextByName(QString name);
QStringList getAllPage();
/*********************************************************************************/
bool deleteComponentById(int id);
void select();
void parallelUpdate();
QJsonObject QstringToJson(QString jsonString);
public:
//***********元模
bool getAttributeGroup(); //获取属性组信息
bool getDataType(); //获取数据类型信息
bool getModelType(); //获取模型类型
bool getModelGroup(); //获取模型组
bool getAttribute(); //获取属性
bool getModelAttribute(); //获取模型-属性对照组
bool getModelAttributePublic(); //获取公共属性组
bool getModelConnectivity(); //获取连接性
QMap<int,attributeGroup> AttributeGroup() const {return _attributeGroup;}
QMap<int,dataType> DataType() const {return _dataType;}
QMap<int,modelType> ModelType() const {return _modelType;}
QMap<int,modelGroup> ModelGroup() const {return _modelGroup;}
QMap<int,attribute> Attribute() const {return _attribute;}
QMap<int,modelAttribute> ModelAttribute() const {return _modelAttribute;}
QMap<int,modelAttributePublic> ModelAttributePublic() const {return _modelAttributePublic;}
QMap<int,modelConnectivity> ModelConnectivity() const {return _modelConnectivity;}
//***********工程模
bool createProjectManager(); //生成记录表,包含工程模名称,属性组名,启用和关闭的属性字段(json类型)[一个属性组建一个表]
bool insertProjectManager(const QString& name,const QString& tag,const QString& metaModel,const QString& groupName,int linkType,QJsonObject checkState,bool isPublic = false);
bool updateCheckState(const QString& tableName,QJsonObject checkState); //更新属性选中状态
QMap<QString,int> getProjectFromManager(const QString& sMeta); //返回元模下已创建的工程名
QMap<QString,QJsonObject> getCheckStateFromManager(const QString& sProject); //获取当前工程模型所有属性的选择状态 <属性名,选择状态>
QMap<QString,QJsonObject> getPublicStateFromManager(); //获取公共属性组
QMap<QString,QString> getProjectTableName(const QString& sProject); //获取当前工程模型下所有表信息
bool createDynamicTable(const QString&, const QStringList&);
bool deleteProjectModel(const QString&);
bool ifDynamicTableExist(const QString&); //动态表是否存在
bool updateProjectName(const QString& newTable,const QString& newPro,const QString& oldTable); //更新mangager工程模名称
bool alterTableName(const QString& oldTable,const QString& newTable); //修改表名
bool updateComponentModelName(const QString& strOld,const QString& strNew); //修改component中的模型名
bool deleteTable(const QString&); //删除表
bool deleteRecordFromManager(const QString& sProject,const QString& sGroup); //删除某个模型下的组
bool modifyProjectTable(QString sTable,QMap<QString,QString> mOld,QMap<QString,QString> mNew);
QStringList ifModelOccupy(const QString&); //判断模型是否被使用
//**********使用工程模
QMap<QString,int> getAllProjectModel(); //获取所有工程模<名称,图元类型>
QMap<QString,propertyGroupState> getModelInfo(const QString&); //获取模型信息
QMap<QString,propertyGroupState> getPublicInfo(); //获取公共属性组信息
QMap<QString,projectManager> getProjectModelGroupInfo(const QString&); //获取指定工程模所有属性组信息<属性组名,属性信息>
QMap<QUuid,PropertyValueInfo> selectGroupProperty(const QString& tableName,QMap<QString,propertyStateInfo> mapPro); //返回属性组表中的信息
private:
QMap<int,attributeGroup> _attributeGroup; //属性组的组
QMap<int,dataType> _dataType; //数据类型组
QMap<int,modelType> _modelType; //模型类型
QMap<int,modelGroup> _modelGroup; //模型组
QMap<int,attribute> _attribute; //属性组
QMap<int,modelAttribute> _modelAttribute; //模型-属性对照组
QMap<int,modelAttributePublic> _modelAttributePublic; //公共属性组
QMap<int,modelConnectivity> _modelConnectivity; //连接性组
private:
void initial();
//bool createProjectDB();
//void initialProjectDB();
void readXML();
static DataBase* dbInstance;
static int _id;
QSqlDatabase db;
//QSqlDatabase prodb;
QString m_sFileName;
QString _DataBaseType;
QString _DataBaseName;
//QString _ProjectDB; //工程模数据库名
QString _HostName;
int _Port;
QString _UserName;
QString _PassWord;
};
#endif // DATABASE_H