|
@@ -54,7 +54,7 @@ void CompareItemThread::task()
|
|
|
while (m_isRunning)
|
|
|
{
|
|
|
/* 睡眠100ms */
|
|
|
- std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
|
+ std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
|
|
|
|
|
/* -------------------------------------------------------------------------------------
|
|
|
* 更新对比项信息
|
|
@@ -84,6 +84,10 @@ void CompareItemThread::task()
|
|
|
* 将音量包数据发送到MQTT中
|
|
|
* ------------------------------------------------------------------------------------- */
|
|
|
sendResultData();
|
|
|
+
|
|
|
+ /* 清除标志位 */
|
|
|
+ clearUpdateFlags();
|
|
|
+ SPDLOG_LOGGER_WARN(m_logger, "{} 发送对比项数据到MQTT中", m_logBase);
|
|
|
}
|
|
|
/* 清理数据 */
|
|
|
clearData();
|
|
@@ -102,17 +106,14 @@ bool CompareItemThread::initData()
|
|
|
/* 创建计算音量报警信息的线程指针 */
|
|
|
destroyCalculateDBThreads(); // 清理之前的线程
|
|
|
createCalculateDBThreads();
|
|
|
-
|
|
|
- /* 获取计算噪音的线程 */
|
|
|
- removeNoiseDetectThreads(); // 清理之前的噪音检测线程
|
|
|
- getNoiseDetectThreads();
|
|
|
|
|
|
/* 创建两个对比线程,主通道是第一个通道,其他都需要和主通道进行对比 */
|
|
|
destroyCompareThreads();
|
|
|
- if(!createCompareThreads())
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
+ createCompareThreads();
|
|
|
+
|
|
|
+ /* 获取计算噪音的线程 */
|
|
|
+ removeNoiseDetectThreads(); // 清理之前的噪音检测线程
|
|
|
+ getNoiseDetectThreads();
|
|
|
|
|
|
/* 初始化存储结果的数据结构 */
|
|
|
m_compareResult = CompareResult_t();
|
|
@@ -120,37 +121,41 @@ bool CompareItemThread::initData()
|
|
|
m_compareResult.compareItemName = m_threadInfo.compareItemInfo.strName.toStdString();
|
|
|
m_compareResult.dateTime = QDateTime::currentDateTime();
|
|
|
m_compareResult.isClientAlarm = false; // 默认不报警
|
|
|
- m_compareResult.vecRoadVolumes.clear(); // 清空之前的数据
|
|
|
+ m_compareResult.mapRoadVolumes.clear(); // 清空之前的数据
|
|
|
for(const auto& road : m_threadInfo.compareItemInfo.mapRoad)
|
|
|
{
|
|
|
OneRoadVolume_t oneRoadVolume;
|
|
|
oneRoadVolume.roadInfo = road; // 设置通道信息
|
|
|
oneRoadVolume.dateTime = QDateTime::currentDateTime(); // 初始化时间
|
|
|
- m_compareResult.vecRoadVolumes.push_back(oneRoadVolume);
|
|
|
+ m_compareResult.mapRoadVolumes.insert({road.nCompareRoadNum, oneRoadVolume});
|
|
|
}
|
|
|
|
|
|
- int roadCount = m_threadInfo.compareItemInfo.mapRoad.size();
|
|
|
- m_vecCDBUpdated.clear();
|
|
|
- m_vecCDBUpdated.reserve(roadCount);
|
|
|
- for(int i = 0; i < m_threadInfo.compareItemInfo.mapRoad.size(); ++i)
|
|
|
+ m_mapCDBUpdated.clear();
|
|
|
+ for(auto it : m_threadInfo.compareItemInfo.mapRoad)
|
|
|
{
|
|
|
- m_vecCDBUpdated.push_back(false); // 初始化为未更新
|
|
|
+ m_mapCDBUpdated.insert({it.nCompareRoadNum, false}); // 初始化更新标志位为false
|
|
|
}
|
|
|
|
|
|
/* 初始化报警信息 */
|
|
|
- m_vecAlarmSilence.clear();
|
|
|
- m_vecAlarmOverload.clear();
|
|
|
- m_vecAlarmPhase.clear();
|
|
|
- m_vecAlarmSilence.reserve(roadCount);
|
|
|
- m_vecAlarmOverload.reserve(roadCount);
|
|
|
- m_vecAlarmPhase.reserve(roadCount);
|
|
|
-
|
|
|
- m_vecAlarmSilenceLast.clear();
|
|
|
- m_vecAlarmOverloadLast.clear();
|
|
|
- m_vecAlarmPhaseLast.clear();
|
|
|
- m_vecAlarmSilenceLast.reserve(roadCount);
|
|
|
- m_vecAlarmOverloadLast.reserve(roadCount);
|
|
|
- m_vecAlarmPhaseLast.reserve(roadCount);
|
|
|
+ m_mapAlarmSilence.clear();
|
|
|
+ m_mapAlarmOverload.clear();
|
|
|
+ m_mapAlarmPhase.clear();
|
|
|
+ for(const auto& road : m_threadInfo.compareItemInfo.mapRoad)
|
|
|
+ {
|
|
|
+ m_mapAlarmSilence.insert({road.nCompareRoadNum, AlarmInfo_t()});
|
|
|
+ m_mapAlarmOverload.insert({road.nCompareRoadNum, AlarmInfo_t()});
|
|
|
+ m_mapAlarmPhase.insert({road.nCompareRoadNum, AlarmInfo_t()});
|
|
|
+ }
|
|
|
+
|
|
|
+ m_mapAlarmSilenceLast.clear();
|
|
|
+ m_mapAlarmOverloadLast.clear();
|
|
|
+ m_mapAlarmPhaseLast.clear();
|
|
|
+ for(const auto& road : m_threadInfo.compareItemInfo.mapRoad)
|
|
|
+ {
|
|
|
+ m_mapAlarmSilenceLast.insert({road.nCompareRoadNum, AlarmInfo_t()});
|
|
|
+ m_mapAlarmOverloadLast.insert({road.nCompareRoadNum, AlarmInfo_t()});
|
|
|
+ m_mapAlarmPhaseLast.insert({road.nCompareRoadNum, AlarmInfo_t()});
|
|
|
+ }
|
|
|
|
|
|
return true;
|
|
|
}
|
|
@@ -159,16 +164,16 @@ bool CompareItemThread::initData()
|
|
|
void CompareItemThread::clearData()
|
|
|
{
|
|
|
/* 停止所有的比对线程 */
|
|
|
- for(auto& thread : m_vecCompareDoubleThreads)
|
|
|
+ for(auto& pair : m_mapCompareDoubleThreads)
|
|
|
{
|
|
|
- if(thread != nullptr)
|
|
|
+ if(pair.second != nullptr)
|
|
|
{
|
|
|
- thread->stopThreadBlock();
|
|
|
- delete thread;
|
|
|
- thread = nullptr;
|
|
|
+ pair.second->stopThreadBlock();
|
|
|
+ delete pair.second;
|
|
|
+ pair.second = nullptr;
|
|
|
}
|
|
|
}
|
|
|
- m_vecCompareDoubleThreads.clear();
|
|
|
+ m_mapCompareDoubleThreads.clear();
|
|
|
/* 移除使用到的录音通道 */
|
|
|
for(auto& it : m_threadInfo.compareItemInfo.mapRoad)
|
|
|
{
|
|
@@ -186,10 +191,10 @@ bool CompareItemThread::createCompareThreads()
|
|
|
{
|
|
|
auto it = m_threadInfo.compareItemInfo.mapRoad.begin();
|
|
|
auto mainRoad = it.value(); // 主通道信息
|
|
|
- uint64_t size = m_threadInfo.compareItemInfo.mapRoad.size();
|
|
|
- for(uint64_t i = 1; i < size; ++i)
|
|
|
+ it++; // 移动到下一个通道
|
|
|
+ // uint64_t size = m_threadInfo.compareItemInfo.mapRoad.size();
|
|
|
+ for(; it != m_threadInfo.compareItemInfo.mapRoad.end(); it++)
|
|
|
{
|
|
|
- it++;
|
|
|
CalculateThreadInfo_t compareThreadInfo;
|
|
|
compareThreadInfo.compareItemInfo = m_threadInfo.compareItemInfo;
|
|
|
compareThreadInfo.compareItemInfo.mapRoad.clear(); // 清空通道信息
|
|
@@ -202,7 +207,7 @@ bool CompareItemThread::createCompareThreads()
|
|
|
SPDLOG_LOGGER_ERROR(m_logger, "{} 创建对比线程 {} - {} 失败", m_logBase, mainRoad.strCompareRoadName.toStdString(), it.value().strCompareRoadName.toStdString());
|
|
|
return false;
|
|
|
}
|
|
|
- m_vecCompareDoubleThreads.push_back(pThread);
|
|
|
+ m_mapCompareDoubleThreads.insert({it.key(), pThread}); // 保存线程指针
|
|
|
/* 开始运行 */
|
|
|
CPPTP.add_task(&CompareDoubleThread::threadTask, pThread);
|
|
|
}
|
|
@@ -213,22 +218,22 @@ bool CompareItemThread::createCompareThreads()
|
|
|
/* 销毁两两对比线程 */
|
|
|
void CompareItemThread::destroyCompareThreads()
|
|
|
{
|
|
|
- if(m_vecCompareDoubleThreads.size() == 0)
|
|
|
+ if(m_mapCompareDoubleThreads.size() == 0)
|
|
|
{
|
|
|
return; // 没有对比线程
|
|
|
}
|
|
|
SPDLOG_LOGGER_INFO(m_logger, "{} 销毁对比线程", m_logBase);
|
|
|
- for(auto& thread : m_vecCompareDoubleThreads)
|
|
|
+ for(auto& pair : m_mapCompareDoubleThreads)
|
|
|
{
|
|
|
- if(thread != nullptr)
|
|
|
+ if(pair.second != nullptr)
|
|
|
{
|
|
|
- thread->stopThreadBlock(); // 停止线程
|
|
|
- delete thread; // 删除线程
|
|
|
- thread = nullptr; // 设置为nullptr
|
|
|
+ pair.second->stopThreadBlock(); // 停止线程
|
|
|
+ delete pair.second; // 删除线程
|
|
|
+ pair.second = nullptr; // 设置为nullptr
|
|
|
}
|
|
|
}
|
|
|
- m_vecCompareDoubleThreads.clear();
|
|
|
- m_vecCDBUpdated.clear(); // 清空更新标志位
|
|
|
+ m_mapCompareDoubleThreads.clear();
|
|
|
+ m_mapCDBUpdated.clear(); // 清空更新标志位
|
|
|
SPDLOG_LOGGER_INFO(m_logger, "{} 对比线程销毁完成", m_logBase);
|
|
|
}
|
|
|
|
|
@@ -249,7 +254,7 @@ bool CompareItemThread::createCalculateDBThreads()
|
|
|
// return false; // 获取线程失败
|
|
|
}
|
|
|
CPPTP.add_task(&CalculateDBThread::threadTask, pThread);
|
|
|
- m_vecCalculateDBThreads.push_back(pThread);
|
|
|
+ m_mapCalculateDBThreads.insert({road.nCompareRoadNum, pThread}); // 保存线程指针
|
|
|
}
|
|
|
|
|
|
return true;
|
|
@@ -258,22 +263,22 @@ bool CompareItemThread::createCalculateDBThreads()
|
|
|
/* 销毁音量计算的线程 */
|
|
|
void CompareItemThread::destroyCalculateDBThreads()
|
|
|
{
|
|
|
- if(m_vecCalculateDBThreads.size() == 0)
|
|
|
+ if(m_mapCalculateDBThreads.size() == 0)
|
|
|
{
|
|
|
return; // 没有音量计算线程
|
|
|
}
|
|
|
SPDLOG_LOGGER_INFO(m_logger, "{} 销毁音量计算线程", m_logBase);
|
|
|
- for(auto& thread : m_vecCalculateDBThreads)
|
|
|
+ for(auto& pair : m_mapCalculateDBThreads)
|
|
|
{
|
|
|
- if(thread != nullptr)
|
|
|
+ if(pair.second != nullptr)
|
|
|
{
|
|
|
- thread->stopThreadBlock(); // 停止线程
|
|
|
- delete thread; // 删除线程
|
|
|
- thread = nullptr; // 设置为nullptr
|
|
|
+ pair.second->stopThreadBlock(); // 停止线程
|
|
|
+ delete pair.second; // 删除线程
|
|
|
+ pair.second = nullptr; // 设置为nullptr
|
|
|
}
|
|
|
}
|
|
|
- m_vecCalculateDBThreads.clear();
|
|
|
- m_vecCDBUpdated.clear(); // 清空更新标志位
|
|
|
+ m_mapCalculateDBThreads.clear();
|
|
|
+ m_mapCDBUpdated.clear(); // 清空更新标志位
|
|
|
|
|
|
SPDLOG_LOGGER_INFO(m_logger, "{} 音量计算线程销毁完成", m_logBase);
|
|
|
}
|
|
@@ -289,7 +294,7 @@ bool CompareItemThread::getNoiseDetectThreads()
|
|
|
SPDLOG_LOGGER_ERROR(m_logger, "{} 获取噪音检测线程失败", m_logBase);
|
|
|
return false; // 获取线程失败
|
|
|
}
|
|
|
- m_vecNoiseDetectThreads.push_back(pThread);
|
|
|
+ m_mapNoiseDetectThreads.insert({road.nCompareRoadNum, pThread});
|
|
|
}
|
|
|
|
|
|
return true;
|
|
@@ -298,19 +303,19 @@ bool CompareItemThread::getNoiseDetectThreads()
|
|
|
/* 移除噪音检测的线程 */
|
|
|
void CompareItemThread::removeNoiseDetectThreads()
|
|
|
{
|
|
|
- if(m_vecNoiseDetectThreads.size() == 0)
|
|
|
+ if(m_mapNoiseDetectThreads.size() == 0)
|
|
|
{
|
|
|
return; // 没有噪音检测线程
|
|
|
}
|
|
|
SPDLOG_LOGGER_INFO(m_logger, "{} 移除噪音检测线程", m_logBase);
|
|
|
- for(auto& thread : m_vecNoiseDetectThreads)
|
|
|
+ for(auto& pair : m_mapNoiseDetectThreads)
|
|
|
{
|
|
|
- if(thread != nullptr)
|
|
|
+ if(pair.second != nullptr)
|
|
|
{
|
|
|
- ThreadMan.removeNoiseDetectThread(thread->getRoadInfo(), m_threadInfo.compareItemInfo.nID);
|
|
|
+ ThreadMan.removeNoiseDetectThread(pair.second->getRoadInfo(), m_threadInfo.compareItemInfo.nID);
|
|
|
}
|
|
|
}
|
|
|
- m_vecNoiseDetectThreads.clear();
|
|
|
+ m_mapNoiseDetectThreads.clear();
|
|
|
SPDLOG_LOGGER_INFO(m_logger, "{} 噪音检测线程移除完成", m_logBase);
|
|
|
}
|
|
|
|
|
@@ -324,99 +329,94 @@ void CompareItemThread::removeNoiseDetectThreads()
|
|
|
*/
|
|
|
bool CompareItemThread::updateResultData()
|
|
|
{
|
|
|
- const int size = m_threadInfo.compareItemInfo.mapRoad.size();
|
|
|
-
|
|
|
/* -------------------------------------------------------------------------------------
|
|
|
* 先从音量计算数据中获取音量包信息和报警信息(静音、过载、反相)
|
|
|
* ------------------------------------------------------------------------------------- */
|
|
|
- for(int i = 0; i < size; ++i)
|
|
|
+ for(auto& pair : m_mapCDBUpdated)
|
|
|
{
|
|
|
- if(m_vecCDBUpdated[i] == true)
|
|
|
+ if(pair.second == true)
|
|
|
{
|
|
|
- continue; // 已经更新过了
|
|
|
+ /* 已经更新过了 */
|
|
|
+ continue;
|
|
|
}
|
|
|
- CalculateDBThread* pThread = m_vecCalculateDBThreads[i];
|
|
|
+ CalculateDBThread* pThread = m_mapCalculateDBThreads[pair.first];
|
|
|
if(pThread == nullptr)
|
|
|
{
|
|
|
- SPDLOG_LOGGER_ERROR(m_logger, "{} 获取音量计算线程失败", m_logBase);
|
|
|
- continue; // 跳过这个线程
|
|
|
+ SPDLOG_LOGGER_ERROR(m_logger, "{} 音量计算线程失效", m_logBase);
|
|
|
+ continue;
|
|
|
}
|
|
|
/* 获取最新的音量数据 */
|
|
|
- if(pThread->getlastVolumeInfo(m_compareResult.vecRoadVolumes[i]))
|
|
|
+ if(!pThread->getlastVolumeInfo(m_compareResult.mapRoadVolumes[pair.first]))
|
|
|
{
|
|
|
- m_vecCDBUpdated[i] = true; // 标记为已更新
|
|
|
+ continue; // 没有获取到最新数据,继续等待
|
|
|
}
|
|
|
/* 更新报警信息 */
|
|
|
- m_vecAlarmSilence[i] = pThread->getAlarm(EAlarmType::EAT_Silent);
|
|
|
- m_vecAlarmOverload[i] = pThread->getAlarm(EAlarmType::EAT_Overload);
|
|
|
- m_vecAlarmPhase[i] = pThread->getAlarm(EAlarmType::EAT_Reversed);
|
|
|
+ m_mapAlarmSilence[pair.first] = pThread->getAlarm(EAlarmType::EAT_Silent);
|
|
|
+ m_mapAlarmOverload[pair.first] = pThread->getAlarm(EAlarmType::EAT_Overload);
|
|
|
+ m_mapAlarmPhase[pair.first] = pThread->getAlarm(EAlarmType::EAT_Reversed);
|
|
|
+
|
|
|
+ pair.second = true; // 设置更新标志位为true
|
|
|
}
|
|
|
/* 判断是否全部更新,如果没有则返回,等待下次再次获取 */
|
|
|
- for(int i = 0; i < size; ++i)
|
|
|
+ for(auto& pair : m_mapCDBUpdated)
|
|
|
{
|
|
|
- if(m_vecCDBUpdated[i] == false)
|
|
|
+ if(false == pair.second)
|
|
|
{
|
|
|
// SPDLOG_LOGGER_DEBUG(m_logger, "{} 音量计算线程数据未全部更新,等待下次获取", m_logBase);
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/* -------------------------------------------------------------------------------------
|
|
|
* 获取噪音计算的结果
|
|
|
* ------------------------------------------------------------------------------------- */
|
|
|
- for(int i = 0; i < size; ++i)
|
|
|
+ for(auto& pair : m_mapNoiseDetectThreads)
|
|
|
{
|
|
|
- NoiseDetectThread* pThread = m_vecNoiseDetectThreads[i];
|
|
|
+ NoiseDetectThread* pThread = pair.second;
|
|
|
if(pThread == nullptr)
|
|
|
{
|
|
|
- SPDLOG_LOGGER_ERROR(m_logger, "{} 获取噪音检测线程失败", m_logBase);
|
|
|
+ SPDLOG_LOGGER_ERROR(m_logger, "{} 噪音检测线程失效", m_logBase);
|
|
|
continue; // 跳过这个线程
|
|
|
}
|
|
|
/* 获取最新的噪音数据,噪音报警那个标志位貌似没用到 */
|
|
|
- m_compareResult.vecRoadVolumes[i].isNoise = pThread->isNoise();
|
|
|
+ m_compareResult.mapRoadVolumes[pair.first].isNoise = pThread->isNoise();
|
|
|
}
|
|
|
|
|
|
/* -------------------------------------------------------------------------------------
|
|
|
* 从对比项中获取核对过后的一致性结果
|
|
|
* ------------------------------------------------------------------------------------- */
|
|
|
- for(int i = 1; i < size; ++i)
|
|
|
+ for(auto& pair : m_mapCompareDoubleThreads)
|
|
|
{
|
|
|
- CompareDoubleThread* pThread = m_vecCompareDoubleThreads[i-1];
|
|
|
+ CompareDoubleThread* pThread = pair.second;
|
|
|
if(pThread == nullptr)
|
|
|
{
|
|
|
- SPDLOG_LOGGER_ERROR(m_logger, "{} 获取对比线程失败", m_logBase);
|
|
|
+ SPDLOG_LOGGER_ERROR(m_logger, "{} 一致性对比线程失效", m_logBase);
|
|
|
continue;
|
|
|
}
|
|
|
/* 获取最新的一致性结果 */
|
|
|
OneRoadVolume_t roadVolume;
|
|
|
if(pThread->getlastVolumeInfo(roadVolume))
|
|
|
{
|
|
|
- m_compareResult.vecRoadVolumes[i].isConsistency = roadVolume.isConsistency;
|
|
|
- m_compareResult.vecRoadVolumes[i].isNotConsistencyWarning = roadVolume.isNotConsistencyWarning;
|
|
|
+ m_compareResult.mapRoadVolumes[pair.first].isConsistency = roadVolume.isConsistency;
|
|
|
+ m_compareResult.mapRoadVolumes[pair.first].isNotConsistencyWarning = roadVolume.isNotConsistencyWarning;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-/* 发送数据 */
|
|
|
-void CompareItemThread::sendResultData()
|
|
|
-{
|
|
|
- /* 生成json数据 */
|
|
|
-
|
|
|
- /* 发送到mqtt中 */
|
|
|
|
|
|
-}
|
|
|
|
|
|
/* 处理报警数据,主要是和之前的数据尽情对比,是否是一样的 */
|
|
|
void CompareItemThread::processAlarmData()
|
|
|
{
|
|
|
m_listAlarm.clear();
|
|
|
/* 处理静音报警数据 */
|
|
|
- for(size_t i = 0; i < m_vecAlarmSilence.size(); ++i)
|
|
|
+ for(auto& pair : m_mapAlarmSilence)
|
|
|
{
|
|
|
- auto& nowAlarm = m_vecAlarmSilence[i];
|
|
|
- auto& lastAlarm = m_vecAlarmSilenceLast[i];
|
|
|
+ auto& nowAlarm = pair.second;
|
|
|
+ auto& lastAlarm = m_mapAlarmSilenceLast[pair.first];
|
|
|
if(nowAlarm.isAlarm)
|
|
|
{
|
|
|
if(lastAlarm == nowAlarm)
|
|
@@ -426,16 +426,16 @@ void CompareItemThread::processAlarmData()
|
|
|
nowAlarm.CompareItemID = m_threadInfo.compareItemInfo.nID;
|
|
|
nowAlarm.strCompareItemName = m_threadInfo.compareItemInfo.strName.toStdString();
|
|
|
m_listAlarm.push_back(nowAlarm);
|
|
|
- m_vecAlarmSilenceLast[i] = nowAlarm;
|
|
|
+ m_mapAlarmSilenceLast[pair.first] = nowAlarm;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* 处理过载报警数据 */
|
|
|
- for(size_t i = 0; i < m_vecAlarmOverload.size(); ++i)
|
|
|
+ for(auto& pair : m_mapAlarmOverload)
|
|
|
{
|
|
|
- auto& nowAlarm = m_vecAlarmOverload[i];
|
|
|
- auto& lastAlarm = m_vecAlarmOverloadLast[i];
|
|
|
+ auto& nowAlarm = pair.second;
|
|
|
+ auto& lastAlarm = m_mapAlarmOverloadLast[pair.first];
|
|
|
if(nowAlarm.isAlarm)
|
|
|
{
|
|
|
if(lastAlarm == nowAlarm)
|
|
@@ -445,16 +445,16 @@ void CompareItemThread::processAlarmData()
|
|
|
nowAlarm.CompareItemID = m_threadInfo.compareItemInfo.nID;
|
|
|
nowAlarm.strCompareItemName = m_threadInfo.compareItemInfo.strName.toStdString();
|
|
|
m_listAlarm.push_back(nowAlarm);
|
|
|
- m_vecAlarmOverloadLast[i] = nowAlarm;
|
|
|
+ m_mapAlarmOverloadLast[pair.first] = nowAlarm;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* 处理反相报警数据 */
|
|
|
- for(size_t i = 0; i < m_vecAlarmPhase.size(); ++i)
|
|
|
+ for(auto& pair : m_mapAlarmPhase)
|
|
|
{
|
|
|
- auto& nowAlarm = m_vecAlarmPhase[i];
|
|
|
- auto& lastAlarm = m_vecAlarmPhaseLast[i];
|
|
|
+ auto& nowAlarm = pair.second;
|
|
|
+ auto& lastAlarm = m_mapAlarmPhaseLast[pair.first];
|
|
|
if(nowAlarm.isAlarm)
|
|
|
{
|
|
|
if(lastAlarm == nowAlarm)
|
|
@@ -464,7 +464,7 @@ void CompareItemThread::processAlarmData()
|
|
|
nowAlarm.CompareItemID = m_threadInfo.compareItemInfo.nID;
|
|
|
nowAlarm.strCompareItemName = m_threadInfo.compareItemInfo.strName.toStdString();
|
|
|
m_listAlarm.push_back(nowAlarm);
|
|
|
- m_vecAlarmPhaseLast[i] = nowAlarm;
|
|
|
+ m_mapAlarmPhaseLast[pair.first] = nowAlarm;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -472,3 +472,22 @@ void CompareItemThread::processAlarmData()
|
|
|
/* 将报警列表写入到处理报警数据的线程中 */
|
|
|
}
|
|
|
|
|
|
+/* 发送数据 */
|
|
|
+void CompareItemThread::sendResultData()
|
|
|
+{
|
|
|
+ /* 生成json数据 */
|
|
|
+
|
|
|
+ /* 发送到mqtt中 */
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/* 清除标志更新位 */
|
|
|
+void CompareItemThread::clearUpdateFlags()
|
|
|
+{
|
|
|
+ for(auto& pair : m_mapCDBUpdated)
|
|
|
+ {
|
|
|
+ pair.second = false; // 清除更新标志位
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|