|
|
@@ -2475,7 +2475,7 @@ void CResistAlarmMng::ThreadProcDevice(DWORD_PTR param)
|
|
|
{
|
|
|
auto pService = (CResistAlarmMng*)param;
|
|
|
this_thread::sleep_for(chrono::seconds(2));
|
|
|
- static CTimeSpan offline_time(0, 0, 3, 0); //设备离线时间暂定5分钟
|
|
|
+ static CTimeSpan offline_time(0, 0, 5, 0); //设备离线时间暂定5分钟
|
|
|
static CTimeSpan offline_limit(30, 0, 0, 0);
|
|
|
bool bLock = false;
|
|
|
|
|
|
@@ -2498,11 +2498,10 @@ void CResistAlarmMng::ThreadProcDevice(DWORD_PTR param)
|
|
|
//离线设备
|
|
|
|
|
|
{
|
|
|
-
|
|
|
auto& pMap = CMonitorObjectMng::Instance()->m_mapMoMpInfo;
|
|
|
for (auto& it : pMap)
|
|
|
{
|
|
|
- auto pInfo = it.second;
|
|
|
+ auto& pInfo = it.second;
|
|
|
if (pInfo == nullptr) continue;
|
|
|
bool bAlarm = false;
|
|
|
if (!pInfo->pDeivce) continue;
|
|
|
@@ -2511,8 +2510,13 @@ void CResistAlarmMng::ThreadProcDevice(DWORD_PTR param)
|
|
|
continue;
|
|
|
if (ctNow - pDevice->m_ctUpdateTime > offline_time)
|
|
|
bAlarm = true;
|
|
|
- else
|
|
|
- int ii = 0;
|
|
|
+ else if (pInfo->bFirstOnline)
|
|
|
+ {//第一次上线发送一次315离线报警恢复 因铁大未作报警同步
|
|
|
+ pInfo->bFirstOnline = false;
|
|
|
+ g_p315ClientManager->GetTcpClient()->SendAlarmData(pInfo->zzjno, 2, pDevice->m_ctUpdateTime.GetTime(), pDevice->m_ctUpdateTime.GetTime(), eZL_ALARMTYPE::EQUIP_OFFLINE,
|
|
|
+ eDaoChaPosi::DCP_UNKNOWN, 1, eLowHigh::LH_UNKNOWN, TIEDA_ACQ_VALUE(INT_MIN), TIEDA_ACQ_VALUE(INT_MIN), 0);
|
|
|
+ SPDLOG_INFO("{}第一次上线发送一次315离线报警恢复", it.first);
|
|
|
+ }
|
|
|
ALARM_INFO* pAlarmInfo = nullptr;
|
|
|
bool bNew = false;
|
|
|
auto ctAlarmTime = ctNow;
|
|
|
@@ -2533,10 +2537,11 @@ void CResistAlarmMng::ThreadProcDevice(DWORD_PTR param)
|
|
|
{
|
|
|
//恢复报警
|
|
|
//更新数据库
|
|
|
- //string recovery_time = ctAlarmTime.Format("%Y-%m-%d %H:%M:%S");
|
|
|
- //CString sql;
|
|
|
- //sql.Format("UPDATE [rm_alarm] SET [recovery_time]='%s' WHERE ID = %d;", recovery_time.c_str(), pAlarmInfo->id);
|
|
|
- //CDBConnectPool::Instance()->DBExecuteSQL(sql);
|
|
|
+ if (ctAlarmTime.GetTime() == 0) ctAlarmTime = CTime::GetCurrentTime();
|
|
|
+ string recovery_time = ctAlarmTime.Format("%Y-%m-%d %H:%M:%S");
|
|
|
+ CString sql;
|
|
|
+ sql.Format("UPDATE [rm_alarm] SET [recovery_time]='%s' WHERE ID = %d;", recovery_time.c_str(), pAlarmInfo->id);
|
|
|
+ CDBConnectPool::Instance()->DBExecuteSQL(sql);
|
|
|
//315上送
|
|
|
g_p315ClientManager->GetTcpClient()->SendAlarmData(pInfo->zzjno, 2, CTime(pAlarm->time).GetTime(), ctAlarmTime.GetTime(), pAlarm->type,
|
|
|
eDaoChaPosi::DCP_UNKNOWN, pAlarm->level, eLowHigh::LH_UNKNOWN, TIEDA_ACQ_VALUE(INT_MIN), TIEDA_ACQ_VALUE(INT_MIN), 0);
|
|
|
@@ -2576,41 +2581,40 @@ void CResistAlarmMng::ThreadProcDevice(DWORD_PTR param)
|
|
|
pAlarmInfo->desc = szInfo;
|
|
|
pAlarmInfo->sunroof = CSkylightMng::GetInstance()->IsSkylight(&pAlarmInfo->time);
|
|
|
lock_guard<mutex> lock(pService->m_mtxAlarm);
|
|
|
- //pService->m_lstUnConfirmAlarm.push_back(pAlarmInfo);
|
|
|
+ pService->m_lstUnConfirmAlarm.push_back(pAlarmInfo);
|
|
|
}
|
|
|
|
|
|
//send
|
|
|
- //if (bNew) //不再推送
|
|
|
- //{
|
|
|
- // rapidjson::StringBuffer buffer;
|
|
|
- // auto ret = AlarmInfo2Pack(pAlarmInfo, buffer);
|
|
|
- // const char* output = buffer.GetString();
|
|
|
- // //CAppService::Instance()->GetLwsServer()->SendPackToALLClient_with_noEncode((uint8_t*)output, buffer.GetLength());
|
|
|
- // CAppService::Instance()->GetMgServer()->SendToAllClient(output, buffer.GetLength());
|
|
|
- //}
|
|
|
+ if (bNew) //不再推送
|
|
|
+ {
|
|
|
+ rapidjson::StringBuffer buffer;
|
|
|
+ auto ret = AlarmInfo2Pack(pAlarmInfo, buffer);
|
|
|
+ const char* output = buffer.GetString();
|
|
|
+ CAppService::Instance()->GetMgServer()->SendToAllClient(output, buffer.GetLength());
|
|
|
+ }
|
|
|
|
|
|
//save
|
|
|
if (bNew)
|
|
|
{
|
|
|
- //CString sql;
|
|
|
- //sql.Format("INSERT INTO [rm_alarm]([ID],[mo],[mp],[no],[type],[occur_time],[level],[desc],[suggest],[val],[event_id],[rel_id],posi,loworhigh,referval,[sunroof]) "\
|
|
|
- // "VALUES(%d, '%s', '%s', %d, %d, '%s', %d, '%s', '%s', %d, '%s', '%s',%d,%d,%d,%d);",
|
|
|
- // pAlarmInfo->id, pAlarmInfo->mo.c_str(), pAlarmInfo->mp.c_str(), pAlarmInfo->no, pAlarmInfo->type,
|
|
|
- // (LPCSTR)(ctAlarmTime.Format("%Y-%m-%d %H:%M:%S")), pAlarmInfo->level, pAlarmInfo->desc.c_str(), pAlarmInfo->suggest.c_str(), pAlarmInfo->val,
|
|
|
- // pAlarmInfo->event_id.c_str(), pAlarmInfo->rel_id.c_str(), uint8_t(pAlarmInfo->posi), uint8_t(pAlarmInfo->loworhigh), pAlarmInfo->refer_val, pAlarmInfo->sunroof);
|
|
|
- //
|
|
|
- //if (false == CDBConnectPool::Instance()->DBExecuteSQL(sql))
|
|
|
- // CSimpleLog::Error("执行语句失败" + sql);
|
|
|
- //else
|
|
|
- //{
|
|
|
+ CString sql;
|
|
|
+ sql.Format("INSERT INTO [rm_alarm]([ID],[mo],[mp],[no],[type],[occur_time],[level],[desc],[suggest],[val],[event_id],[rel_id],posi,loworhigh,referval,[sunroof]) "\
|
|
|
+ "VALUES(%d, '%s', '%s', %d, %d, '%s', %d, '%s', '%s', %d, '%s', '%s',%d,%d,%d,%d);",
|
|
|
+ pAlarmInfo->id, pAlarmInfo->mo.c_str(), pAlarmInfo->mp.c_str(), pAlarmInfo->no, pAlarmInfo->type,
|
|
|
+ (LPCSTR)(ctAlarmTime.Format("%Y-%m-%d %H:%M:%S")), pAlarmInfo->level, pAlarmInfo->desc.c_str(), pAlarmInfo->suggest.c_str(), pAlarmInfo->val,
|
|
|
+ pAlarmInfo->event_id.c_str(), pAlarmInfo->rel_id.c_str(), uint8_t(pAlarmInfo->posi), uint8_t(pAlarmInfo->loworhigh), pAlarmInfo->refer_val, pAlarmInfo->sunroof);
|
|
|
+
|
|
|
+ if (false == CDBConnectPool::Instance()->DBExecuteSQL(sql))
|
|
|
+ CSimpleLog::Error("执行语句失败" + sql);
|
|
|
+ else
|
|
|
+ {
|
|
|
uint8_t* pack = nullptr; int len = 0;
|
|
|
- //auto packno = CResistAlarmMng::GeneralNewAlarmData(pAlarmInfo, &pack, &len);
|
|
|
- //if (packno) CSuperManager::Instance()->SendPack(pack, len, packno, E_ZL_PROTOCAL::ZL_ALARM_DATA, true);
|
|
|
+ auto packno = CResistAlarmMng::GeneralNewAlarmData(pAlarmInfo, &pack, &len);
|
|
|
+ if (packno) CSuperManager::Instance()->SendPack(pack, len, packno, E_ZL_PROTOCAL::ZL_ALARM_DATA, true);
|
|
|
g_p315ClientManager->GetTcpClient()->SendAlarmData(pAlarmInfo->zzjno, 1, ctAlarmTime.GetTime(), 0xFFFFFFFF, pAlarmInfo->type, eDaoChaPosi::DCP_UNKNOWN, 1, eLowHigh::LH_UNKNOWN,
|
|
|
TIEDA_ACQ_VALUE(INT_MIN), TIEDA_ACQ_VALUE(INT_MIN), 0);
|
|
|
delete[] pack;
|
|
|
pack = nullptr;
|
|
|
- //}
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|