LAPTOP-SNT8I5JK\Boounion
2024-12-13 b67e16869a5bfbbde3896a4e5a13f1301f1b978d
1.调整保存警告到数据库的位置;
2.CAlarmMonitor组件不再保存已完成的警告的数据;
已修改3个文件
83 ■■■■■ 文件已修改
SourceCode/Bond/BondEq/AlarmMonitor.cpp 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/AlarmMonitor.h 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/CPageAlarm.cpp 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/BondEq/AlarmMonitor.cpp
@@ -30,11 +30,6 @@
        item.second->release();
    }
    m_mapAlarming.clear();
    for (auto item : m_alarms) {
        item->release();
    }
    m_alarms.clear();
}
std::string& CAlarmMonitor::getClassName()
@@ -169,10 +164,10 @@
    if (ar.IsStoring())
    {
        Lock();
        int count = (int)m_alarms.size();
        int count = (int)m_mapAlarming.size();
        ar << count;
        for (auto item : m_alarms) {
            item->Serialize(ar);
        for (auto item : m_mapAlarming) {
            item.second->Serialize(ar);
        }
        Unlock();
    }
@@ -183,9 +178,10 @@
        ar >> count;
        for (int i = 0; i < count; i++) {
            CAlarm* pAlarm = new CAlarm();
            pAlarm->addRef();
            pAlarm->Serialize(ar);
            addAlarmToHistoryRecord(pAlarm);
            LOGE("历史警告:%s", pAlarm->toString().c_str());
            addAlarming(pAlarm);
            pAlarm->release();
        }
        Unlock();
    }
@@ -215,18 +211,6 @@
    Unlock();
    return iter->second;
}
std::list< CAlarm*>& CAlarmMonitor::getAlarmRecords()
{
    return m_alarms;
}
void CAlarmMonitor::getAlarmRecords(std::list< CAlarm*>& list)
{
    Lock();
    list = m_alarms;
    Unlock();
}
BOOL CAlarmMonitor::compareData(const char* pScrData, const char* pTarData, int len)
@@ -270,11 +254,21 @@
void CAlarmMonitor::addAlarmToHistoryRecord(CAlarm* pAlarm)
{
    pAlarm->addRef();
    m_alarms.push_back(pAlarm);
    if (m_alarms.size() > 1000) {
        CAlarm* pTemp = m_alarms.front();
        pTemp->release();
        m_alarms.pop_front();
    // 加入数据库
    AlarmManager::getInstance().addAlarm(
        std::to_string(pAlarm->getId()).c_str(),
        getAlarmText(pAlarm->getId()),
        CToolUnits::timeToString2(pAlarm->getOnTime()).c_str(),
        CToolUnits::timeToString2(pAlarm->getOffTime()).c_str());
    }
BOOL CAlarmMonitor::addAlarming(CAlarm* pAlarm)
{
    auto iter = m_mapAlarming.find(pAlarm->getId());
    if (iter != m_mapAlarming.end()) return FALSE;
    pAlarm->addRef();
    m_mapAlarming[pAlarm->getId()] = pAlarm;
    return TRUE;
}
SourceCode/Bond/BondEq/AlarmMonitor.h
@@ -25,7 +25,6 @@
    BOOL isAlarming();
    CAlarm* getActiveAlarm();
    void getAlarmRecords(std::list< CAlarm*>& list);
    std::list< CAlarm*>& getAlarmRecords();
private:
    BOOL compareData(const char* pScrData, const char* pTarData, int len);
@@ -33,11 +32,11 @@
    BOOL isAlarmOn(int id);
    BOOL findAlarm(std::vector<int>& ids, int id);
    void addAlarmToHistoryRecord(CAlarm* pAlarm);
    BOOL addAlarming(CAlarm* pAlarm);
private:
    std::map<int, CAlarm*> m_mapAlarmTemplate;    // 这是警告的模板,从文件加载
    std::map<int, CAlarm*> m_mapAlarming;        // 正在发生的警告
    std::list< CAlarm*> m_alarms;                // 历史发生的警告信息,考虑保存一定数量
    char* m_pRawData;
};
SourceCode/Bond/BondEq/CPageAlarm.cpp
@@ -157,20 +157,17 @@
{
    CAlarmMonitor* pMonitor = (CAlarmMonitor*)theApp.m_model.getBonder().GetComponent(ALARM_MONITOR);
    // 当前正在发生的报警
    pMonitor->Lock();
#if 0
    std::map<int, CAlarm*>& alarmings = pMonitor->getAlarmingMap();
    std::list< CAlarm*>& alarms = pMonitor->getAlarmRecords();
    for (auto item : alarmings) {
        AddAlarm(pMonitor, item.second);
    }
    for (auto item : alarms) {
        AddAlarm(pMonitor, item);
    }
#else
    // 获取报警数据
    pMonitor->Unlock();
    // 获取历史报警数据
    auto vecData = AlarmManager::getInstance().getAllAlarms();
    // 填充数据
@@ -182,9 +179,6 @@
        pListCtrl->SetItemText(0, 3, item[2].c_str());
        pListCtrl->SetItemText(0, 4, item[3].c_str());
    }
#endif // 0
    pMonitor->Unlock();
}
void CPageAlarm::AddAlarm(CAlarmMonitor* pMonitor, CAlarm* pAlarm)
@@ -202,12 +196,6 @@
    if (pAlarm->getOffTime() > 0) {
        pListCtrl->SetItemText(0, 4, CToolUnits::timeToString2(pAlarm->getOffTime()).c_str());
    }
    AlarmManager::getInstance().addAlarm(
        std::to_string(pAlarm->getId()).c_str(),
        pMonitor->getAlarmText(pAlarm->getId()),
        CToolUnits::timeToString2(pAlarm->getOnTime()).c_str(),
        CToolUnits::timeToString2(pAlarm->getOffTime()).c_str());
}
void CPageAlarm::UpdateAlarm(CAlarmMonitor* pMonitor, CAlarm* pAlarm)
@@ -220,12 +208,6 @@
        if (pListCtrl->GetItemData(i) == (DWORD_PTR)pAlarm) {
            if (pAlarm->getOffTime() > 0) {
                pListCtrl->SetItemText(i, 4, CToolUnits::timeToString2(pAlarm->getOffTime()).c_str());
                AlarmManager::getInstance().updateAlarmEndTime(
                    std::to_string(pAlarm->getId()).c_str(),
                    pMonitor->getAlarmText(pAlarm->getId()),
                    CToolUnits::timeToString2(pAlarm->getOnTime()).c_str(),
                    CToolUnits::timeToString2(pAlarm->getOffTime()).c_str());
            }
        }
    }