82 lines
1.9 KiB
C++
82 lines
1.9 KiB
C++
|
|
#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;
|
|||
|
|
}
|
|||
|
|
|