HM-SPMS/product/src/tools/workBench/DbCheckSync.cpp

82 lines
1.9 KiB
C++
Raw Normal View History

2025-03-13 15:21:23 +08:00
#include "DbCheckSync.h"
#include <QHostInfo>
#include "pub_logger_api/logger.h"
#include "DbCheck.h"
using namespace iot_public;
using namespace iot_dbms;
DbCheckSync::DbCheckSync()
{
if(!createSysInfoInstance(m_ptrSysInfo))
{
LOGERROR("创建系统信息访问库失败");
}
}
DbCheckSync::DbCheckSync(CSysInfoInterfacePtr sysInfo):m_ptrSysInfo(sysInfo)
{
}
int DbCheckSync::getSyncMaxId(SDatabaseInfo &info)
{
//获取首链接节点信息
SNodeInfo stNodeInfo;
int res = m_ptrSysInfo->getNodeInfoByName(info.strNodeName,stNodeInfo);
if(res != iotSuccess)
{
return -1;
}
return getSyncMaxId(info,stNodeInfo);
}
int DbCheckSync::getSyncMaxId(SDatabaseInfo &stConnect, SNodeInfo &stNodeInfo)
{
if(!stNodeInfo.bIsUsed)
{
return -1;
}
for(int index(1);index <= stNodeInfo.nNicNum;index++)
{
CDbPara para;
if(index == 1)
{
para.setHostName(QString::fromStdString(stNodeInfo.strNic1Addr));
}
if(index == 2)
{
para.setHostName(QString::fromStdString(stNodeInfo.strNic2Addr));
}
QString firstColumn = QString("%1/%2").arg(QString::fromStdString(stNodeInfo.strName)).arg(para.getHostName());
if(!DbCheck::getDbPara(stConnect,para))
{
LOGERROR("[%s]数据库类型错误!参数错误,直接默认为数据库状态不正常",firstColumn.toStdString().c_str());
continue;
}
CDbBaseApi baseApi(para);
if(baseApi.open())
{
int maxId = getSyncMaxId(baseApi);
baseApi.close();
return maxId;
}else
{
baseApi.close();
}
}
return -1;
}
int DbCheckSync::getSyncMaxId(CDbBaseApi &baseApi)
{
int maxId = baseApi.getMaxValueByCol("dbop_list","ID").toInt();
return maxId;
}