#include "DbCheckSync.h" #include #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; }