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;
|
|
|
|
|
|
}
|