102 lines
2.9 KiB
C++
Raw Normal View History

2025-03-17 11:07:28 +08:00
#include "CHisEventManage.h"
2025-03-14 17:05:48 +08:00
#include "CDataInfoManage.h"
#include "public/pub_logger_api/logger.h"
#include <QTime>
CHisEventManage::CHisEventManage(QObject *parent)
: QObject(parent)
{
}
void CHisEventManage::release()
{
delete this;
}
void CHisEventManage::queryHisEventStatis(int location, int devType, qint64 startTime, qint64 endTime, EN_STATIS_MODE mode)
{
QTime time;
time.start();
2025-03-17 09:23:17 +08:00
iot_dbms::CTsdbConnPtr tsdbConnPtr;
2025-03-14 17:05:48 +08:00
if(!getValidTsdbConnPtr(tsdbConnPtr))
{
LOGERROR("CTsdbQuery: 未获取到有效的TSDB连接");
emit updateHisEventStatis(QMap<qint64, QMap<int, int> >());
return;
}
QMap<qint64, QMap<int, int> > record;
QStringList devList = CDataInfoManage::instance()->getDevice(location, devType);
for(int nIndex=0; nIndex<devList.length(); nIndex++)
{
CTsdbQuery tsdbQuery(devList[nIndex], tsdbConnPtr);
tsdbQuery.queryEventByPeriod(startTime, endTime, mode, record);
}
LOGINFO("CHisEventManage::queryHisEventStatis() time:%I64u", time.elapsed());
emit updateHisEventStatis(record);
}
void CHisEventManage::queryHisEventContrast(QList<int> selectedList, qint64 startTime, qint64 endTime, EN_STATIS_STYLE style)
{
QTime time;
time.start();
2025-03-17 09:23:17 +08:00
iot_dbms::CTsdbConnPtr tsdbConnPtr;
2025-03-14 17:05:48 +08:00
if(!getValidTsdbConnPtr(tsdbConnPtr))
{
LOGERROR("CTsdbQuery: 未获取到有效的TSDB连接");
emit updateHisEventContrast(QMap<QString, QMap<int, int> >());
return;
}
QMap<QString, QMap<int, int> > record;
foreach (int select, selectedList) {
QStringList devList;
if(STYLE_LOCATION == style)
{
devList = CDataInfoManage::instance()->getDevice(select, -1);
}
else if(STYLE_DEVTYPE == style)
{
devList = CDataInfoManage::instance()->getDevice(-1, select);
}
for(int nIndex=0; nIndex<devList.length(); nIndex++)
{
CTsdbQuery tsdbQuery(devList[nIndex], tsdbConnPtr);
tsdbQuery.queryEventByUnit(startTime, endTime, record);
}
}
LOGINFO("CHisEventManage::queryHisEventContrast() time:%I64u", time.elapsed());
emit updateHisEventContrast(record);
}
2025-03-17 09:23:17 +08:00
bool CHisEventManage::getValidTsdbConnPtr(iot_dbms::CTsdbConnPtr &ptr)
2025-03-14 17:05:48 +08:00
{
if(m_tsdbConnPtr != NULL)
{
if(m_tsdbConnPtr->pingServer())
{
ptr = m_tsdbConnPtr;
return true;
}
}
else
{
m_tsdbConnPtr = getOneUseableConn(true);
if(m_tsdbConnPtr != NULL && m_tsdbConnPtr->pingServer())
{
ptr = m_tsdbConnPtr;
return true;
}
else
{
m_tsdbConnPtr = getOneUseableConn(false);
if(m_tsdbConnPtr != NULL && m_tsdbConnPtr->pingServer())
{
ptr = m_tsdbConnPtr;
return true;
}
}
}
return false;
}