2025-03-17 16:53:15 +08:00

198 lines
5.8 KiB
C++

#ifndef CALARMBASEDATA_H
#define CALARMBASEDATA_H
#include <QObject>
#include "dbms/rdb_api/CRdbAccess.h"
#include "dbms/rdb_net_api/CRdbNetApi.h"
#include "dbms/db_api_ex/CDbApi.h"
#include "pub_sysinfo_api/SysInfoApi.h"
#include <QMap>
#include "CAlarmCommon.h"
#include <QVector>
class CAlarmBaseData : public QObject
{
Q_OBJECT
public:
static CAlarmBaseData * instance();
~CAlarmBaseData();
void destory();
public:
/**
* @brief initData 初始化数据
*/
void initData();
/**
* @brief queryPriorityDesc 根据id查询优先级描述
* @param id 优先级id
* @return 优先级描述
*/
QString queryPriorityDesc(int id);
/**
* @brief queryLocationDesc 根据位置id查询位置描述
* @param id 位置id
* @return 位置描述
*/
QString queryLocationDesc(int id);
/**
* @brief queryRegionDesc 根据责任区id查询责任区描述
* @param id 责任区id
* @return 责任区描述
*/
QString queryRegionDesc(int id);
/**
* @brief queryAlarmTypeDesc 根据告警类型id查询告警类型描述
* @param id 告警类型id
* @return 告警类型描述
*/
QString queryAlarmTypeDesc(int id);
/**
* @brief queryAlarmStatusDesc 根据告警状态id查询告警状态描述
* @param id 告警状态id
* @return 告警状态描述
*/
QString queryAlarmStatusDesc(int id);
/**
* @brief queryDevTypeByDesc 根据设备类型描述查询设备类型id
* @param desc 设备描述
* @return 设备id
*/
int queryDevTypeByDesc(QString &desc);
QList<QString> getDevGroupTagList();
/**
* @brief getAlarmOtherStatus 获取其他告警状态集合
* @return 其他告警状态集合
*/
QMap<int, QString> getAlarmOtherStatus();
/**
* @brief loadAlarmInfoConfig 加载告警配置信息
*/
void loadAlarmInfoConfig();
/**
* @brief queryDomainIdByLocId 通过车站ID得到域ID
* @param loactionId
*/
int queryDomainIdByLocId(int loactionId);
bool queryAllPointDevGroup(int nDomainId, int nSubsystemId, const QString &strDevg, QList<QString> &pointList);
QMap<int, QString> getPriorityMap();
QMap<int, QString> getPermPriorityMap();
QMap<int, QString> getPriorityOrderMap();
QMap<int, QString> getPermLocationMap();
QMap<int, QString> getPermRegionMap();
QMap<int, QString> getAlarmShowStatusMap();
QMap<int,QVector<int> > getAreaLocMap();
QMap<int,SAreaInfo> getAreaInfoMap();
QList<int> getPermLocationIdList();
QList<int> getPermRegionIdList();
QList<int> getPermLocationOrder();
QString getPermLocationDesc(const int &locationId);
private:
explicit CAlarmBaseData(QObject *parent = nullptr);
/**
* @brief loadPermInfo 加载权限
*/
void loadPermInfo();
/**
* @brief loadPriorityDescription 加载优先级描述
*/
void loadPriorityDescription();
/**
* @brief loadLocationDescription 加载位置描述
*/
void loadLocationDescription();
/**
* @brief loadRegionDescription 加载责任区描述
*/
void loadRegionDescription();
/**
* @brief loadAlarmTypeDescription 加载告警类型
*/
void loadAlarmTypeDescription();
/**
* @brief loadAlarmStatusDescription 加载告警状态描述
*/
void loadAlarmStatusDescription();
/**
* @brief loadDeviceTypeDescription 加载设备类型描述
*/
void loadDeviceTypeDescription();
/**
* @brief loadDeviceGroupDescription 加载设备组描述
*/
void loadDeviceGroupDescription();
/**
* @brief loadAlarmShowStatusDescription 加载需要显示在告警窗下拉框中的告警状态描述
*/
void loadAlarmShowStatusDescription();
/**
* @brief loadAlarmOtherStatusDescription 加载其他告警状态描述
*/
void loadAlarmOtherStatusDescription();
/**
* @brief queryAllDeviceDevGroup 查询设备组下所有设备
* @param rdbNetApi
* @param devg
*/
bool queryAllDeviceDevGroup(iot_dbms::CRdbNetApi &rdbNetApi, const QString &devg, QList<QString> &devList);
/**
* @brief queryAllPointDevice 查询表中设备下所有测点
* @param rdbNetApi
* @param device
* @param table
* @param pointList "digital.station.G01_dlq.r.value"
* @return
*/
bool queryAllPointDevice(iot_dbms::CRdbNetApi &rdbNetApi, const QString &device, const QString &table, QList<QString> &pointList);
private:
static CAlarmBaseData * pInstance;
iot_dbms::CRdbAccess * m_rtdbAccess;
iot_dbms::CDbApi *m_pWriteDb;
iot_public::CSysInfoInterfacePtr m_ptrSysInfo;
QList<int> m_listPermLocationId; //< 原始告警车站权限
QList<int> m_listPermRegionId; //< 原始告警责任区权限
QList<int> m_listPermLocationOrder; //< 有权限的loaction_id: 按location_no排序
QMap<int, QString> m_priorityDescriptionMap;
QMap<int, QString> m_priorityPermDescriptionMap;
QMap<int, QString> m_priorityOrderDescriptionMap;
QMap<int, QString> m_locationDescriptionMap;
QMap<int, QString> m_regionDescriptionMap;
QMap<int, QString> m_locationPermDescriptionMap; //有权限的
QMap<int, QString> m_regionPermDescriptionMap; //有权限的
QMap<int, QString> m_alarmTypeDescriptionMap;
QMap<int, QString> m_alarmStatusDescriptionMap;
QMap<int, QString> m_deviceTypeDescriptionMap;
QMap<QString, QString> m_deviceGroupDescriptionMap;
QMap<int, QString> m_alarmShowStatusDescriptionMap;
QMap<int, QString> m_alarmOtherStatusDescriptionMap;
QMap<int,SAreaInfo> m_areaInfoMap; //区域信息
QMap<int,QVector<int> > m_areaLocMap; //区域映射
};
#endif // CALARMBASEDATA_H