From 9f08028f23d9e5cbfa159bec1e07d63b141a6809 Mon Sep 17 00:00:00 2001 From: zhangjixing <775834166@qq.com> Date: 星期五, 18 一月 2019 10:17:00 +0800 Subject: [PATCH] --- QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp | 323 ++++++++++++++++++++++++++--------------------------- 1 files changed, 158 insertions(+), 165 deletions(-) diff --git a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp index f2e61a4..93ca3ab 100644 --- a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp +++ b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp @@ -356,11 +356,23 @@ pModel_cam.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_cam.select(); +// QSqlTableModel pModel_sdk(NULL, m_db); +// pModel_sdk.setTable("cam_sdk"); +// pModel_sdk.setFilter(QObject::tr("cam_dev_id = '%1'").arg(strCamId)); +// pModel_sdk.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange +// pModel_sdk.select(); + QSqlTableModel pModel_sdk(NULL, m_db); - pModel_sdk.setTable("cam_sdk"); - pModel_sdk.setFilter(QObject::tr("cam_dev_id = '%1'").arg(strCamId)); + pModel_sdk.setTable("sdk_rule"); + pModel_sdk.setFilter(QObject::tr("cam_id = '%1'").arg(strCamId)); pModel_sdk.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_sdk.select(); + + QSqlTableModel pModel_week(NULL, m_db); + pModel_week.setTable("rule_week"); + pModel_week.setFilter(QObject::tr("camera_id = '%1'").arg(strCamId)); + pModel_week.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange + pModel_week.select(); int rowCount_cam = pModel_cam.rowCount(); if (rowCount_cam >= 1) { @@ -376,17 +388,25 @@ } } + int rowCount_week = pModel_week.rowCount(); + if (rowCount_week >= 1) { + for (int i = 0; i < rowCount_week; i++) { + pModel_week.removeRow(i);//TODO + } + } + m_db.transaction();//寮�濮嬩簨鍔℃搷浣� if (pModel_cam.submitAll() && \ - pModel_sdk.submitAll()) { + pModel_sdk.submitAll() && pModel_week.submitAll()) { m_db.commit();//鎻愪氦 return true; } else { m_db.rollback();//鍥炴粴 ERR("deleteLDeviceTable err ,Database Error: " \ << pModel_cam.lastError().text().toStdString() \ - << pModel_sdk.lastError().text().toStdString()); + << pModel_sdk.lastError().text().toStdString() \ + << pModel_week.lastError().text().toStdString() ); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } @@ -478,7 +498,20 @@ return lst; } +bool LDBTool::searchCamDevByCamId(QString strCamId) +{ + QMutexLocker mutexLocker(&m_mutexVisit);//TODO + std::list<Record_Cam_Dev> lst; + QSqlTableModel pModel(NULL, m_db); + pModel.setTable("cam_dev"); + pModel.setFilter(QObject::tr("cam_dev_id ='%1' and cam_dev_id != '' and cam_dev_id is not null").arg(strCamId)); + pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange + pModel.select(); + int rowCount = pModel.rowCount(); + + return rowCount > 0; +} //chn========================== /// @@ -2370,7 +2403,7 @@ //config 淇敼瑁佸壀瑙嗛鏃堕暱 -bool LDBTool::updateConfigTableByCutDuration(int n_cut_max_duration) { +bool LDBTool::updateConfigTableByCutDuration(int n_cut_max_duration,int n_cut_min_duration) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("config"); @@ -2379,7 +2412,7 @@ QSqlRecord rec = pModel.record(0); rec.setValue("cut_max_duration", n_cut_max_duration); - + rec.setValue("cut_min_duration", n_cut_min_duration); while (pModel.canFetchMore()) { pModel.fetchMore(); } @@ -2423,32 +2456,22 @@ lRec.str_es_pic_ip = rec.value("es_pic_ip").toString(); lRec.n_es_pic_port = rec.value("es_pic_port").toInt(); lRec.n_cut_max_duration = rec.value("cut_max_duration").toInt(); - lRec.dev_id = QString::fromStdString(appConfig.getStringProperty("DEV_ID")); + lRec.n_cut_min_duration = rec.value("cut_min_duration").toInt(); lRec.dev_name = rec.value("dev_name").toString(); } - + lRec.dev_id = QString::fromStdString(appConfig.getStringProperty("DEV_ID")); + if(lRec.n_cut_max_duration == 0) + { + lRec.n_cut_max_duration = 20; + } + if(lRec.n_cut_min_duration == 0) + { + lRec.n_cut_min_duration = 4; + } return lRec; } -//config 鏌ヨ瑁佸壀瑙嗛鏃堕暱 -int LDBTool::searchConfigTableWithinCutDuration(void) { - int cut_max_duration = 5;//榛樿5鍒嗛挓 - QMutexLocker mutexLocker(&m_mutexVisit);//TODO - QSqlTableModel pModel(NULL, m_db); - pModel.setTable("config"); - pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange - pModel.select(); - int rowCount = pModel.rowCount(); - if (rowCount > 0) { - QSqlRecord rec = pModel.record(0); - if (cut_max_duration != 0) { - cut_max_duration = rec.value("cut_max_duration").toInt(); - } - } - - return cut_max_duration; -} bool LDBTool::insertRecordVedioPath(QString pathKey, QString filePath) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO @@ -2523,55 +2546,33 @@ return false; } } - bool LDBTool::insertPerimeterRule(ActRule actRule) + + + + + bool LDBTool::updateCameraWeekRule(const LActRuleWeekRecord& weekRule) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); - pModel.setTable("rule_perimeter"); + pModel.setTable("rule_week"); + pModel.setFilter(QObject::tr("camera_id = '%1' and type='%2' and sdk_type='%3'").arg(weekRule.m_strCamId).arg(weekRule.m_nType).arg(weekRule.m_nSdkType)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange - - QSqlRecord rec = pModel.record(); - rec.setGenerated("rule_id", false); - rec.setValue("camera_id", actRule.nCamId); - rec.setValue("sensitivity", actRule.fSensitivity); - rec.setValue("delay",actRule.nTriggerDelay); - rec.setValue("tolerance",actRule.nTriggertolerance); - rec.setValue("show_pepole_num",actRule.nAlarmPeopleNum); - - pModel.insertRecord(-1, rec);//TODO - - m_db.transaction();//寮�濮嬩簨鍔℃搷浣� - - if (pModel.submitAll()) { - m_db.commit();//鎻愪氦 - return true; - } else { - m_db.rollback();//鍥炴粴 - ERR("insertCameraRule ,pModel_load Error: " << pModel.lastError().text().toStdString()); - - return false; - } - } - bool LDBTool::updatePerimeterRuleByCamId(ActRule actRule) - { - QMutexLocker mutexLocker(&m_mutexVisit);//TODO - QSqlTableModel pModel(NULL, m_db); - pModel.setTable("rule_perimeter"); - pModel.setFilter(QObject::tr("camera_id = '%1' ").arg(actRule.nCamId)); - pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange - - + pModel.select(); QSqlRecord rec = pModel.record(0); - rec.setValue("camera_id", actRule.nCamId); - rec.setValue("sensitivity", actRule.fSensitivity); - rec.setValue("delay",actRule.nTriggerDelay); - rec.setValue("tolerance",actRule.nTriggertolerance); - rec.setValue("show_pepole_num",actRule.nAlarmPeopleNum); + //rec.setGenerated("id", false); + rec.setValue("camera_id",weekRule.m_strCamId); + rec.setValue("sdk_type",weekRule.m_nSdkType); + rec.setValue("type", weekRule.m_nType); + rec.setValue("begin_time", weekRule.m_strBegin); + rec.setValue("end_time",weekRule.m_strEnd); int rowCount = pModel.rowCount(); - if (rowCount == 0) { + if (rowCount == 0) + { pModel.insertRecord(-1, rec); - } else if (rowCount > 0) { + } + else if (rowCount > 0) + { pModel.setRecord(0, rec);//TODO } @@ -2582,69 +2583,18 @@ return true; } else { m_db.rollback();//鍥炴粴 - ERR("updateCameraRuleByCamId ,pModel_load Error: " << pModel.lastError().text().toStdString()); - return false; - } - - } - ActRule LDBTool::searchPerimeterRuleByCamId(int camId) - { - QMutexLocker mutexLocker(&m_mutexVisit);//TODO - QSqlTableModel pModel(NULL, m_db); - pModel.setTable("rule_perimeter"); - pModel.setFilter(QObject::tr("camera_id = '%1' ").arg(camId)); - pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange - pModel.select(); - - ActRule rule; - int rowCount = pModel.rowCount(); - if (rowCount > 0) { - QSqlRecord rec = pModel.record(0); - rule.nTriggerDelay=rec.value("delay").toInt(); - rule.nTriggertolerance=rec.value("tolerance").toInt(); - rule.strAreas=rec.value("area_points").toString(); - rule.nAlarmPeopleNum=rec.value("show_people_sum").toInt(); - rule.fSensitivity=rec.value("sensitivity").toFloat(); - } - - return rule; - } - - bool LDBTool::insertCameraWeekRule(LActRuleWeekRecord weekRule) - { - QMutexLocker mutexLocker(&m_mutexVisit);//TODO - QSqlTableModel pModel(NULL, m_db); - pModel.setTable("rule_week"); - pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange - - QSqlRecord rec = pModel.record(); - rec.setGenerated("id", false); - rec.setValue("camera_id",weekRule.m_nCamId); - rec.setValue("type", weekRule.m_nType); - rec.setValue("start_time", weekRule.m_strBegin); - rec.setValue("end_time",weekRule.m_strEnd); - - pModel.insertRecord(-1, rec);//TODO - - m_db.transaction();//寮�濮嬩簨鍔℃搷浣� - - if (pModel.submitAll()) { - m_db.commit();//鎻愪氦 - return true; - } else { - m_db.rollback();//鍥炴粴 - ERR("insertCameraWeekRule ,pModel_load Error: " << pModel.lastError().text().toStdString()); + ERR("updateCameraWeekRule ,pModel_load Error: " << pModel.lastError().text().toStdString()); return false; } } - QVector<LActRuleWeekRecord> LDBTool::searchCameraWeekRuleByCamId(int camId) + std::vector<LActRuleWeekRecord> LDBTool::searchCameraWeekRuleByCamId(const QString& camId,const int& sdkType) { - QVector<LActRuleWeekRecord> vecWeek; + std::vector<LActRuleWeekRecord> vecWeek; QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("rule_week"); - pModel.setFilter(QObject::tr("camera_id = '%1' ").arg(camId)); + pModel.setFilter(QObject::tr("camera_id = '%1' and sdk_type='%2'").arg(camId).arg(sdkType)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); @@ -2653,57 +2603,100 @@ { LActRuleWeekRecord lActRuleWeekRec; QSqlRecord rec = pModel.record(i); + lActRuleWeekRec.m_nSdkType = rec.value("sdk_type").toInt(); lActRuleWeekRec.m_nType = rec.value("type").toInt(); - lActRuleWeekRec.m_strBegin = rec.value("begin").toString(); - lActRuleWeekRec.m_strEnd = rec.value("end").toString(); + lActRuleWeekRec.m_strBegin = rec.value("begin_time").toString(); + lActRuleWeekRec.m_strEnd = rec.value("end_time").toString(); + lActRuleWeekRec.m_strCamId=rec.value("camera_id").toString(); vecWeek.push_back(lActRuleWeekRec); } return vecWeek; } - ActRule LDBTool::searchActRuleByCamId(int camId) - { - QMutexLocker mutexLocker(&m_mutexVisit);//TODO - QSqlTableModel pModel(NULL, m_db); - pModel.setTable("rule_act"); - pModel.setFilter(QObject::tr("cam_id = '%1' ").arg(camId)); - pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange - pModel.select(); - ActRule rule; - int rowCount = pModel.rowCount(); - if (rowCount > 0) { - QSqlRecord rec = pModel.record(0); - rule.nTriggertolerance=rec.value("tolerance").toInt(); - rule.nTriggerDelay=rec.value("delay").toInt(); - rule.strAreas=rec.value("act_left_area").toString(); - rule.strLine=rec.value("act_left_line").toString(); - rule.strExAreas=rec.value("act_right_area").toString(); - rule.strExLine=rec.value("act_right_line").toString(); - rule.fSensitivity=rec.value("sensitivity").toFloat(); - } - return rule; - } - ActRule LDBTool::searchCrowdRuleByCamId(int camId) - { - QMutexLocker mutexLocker(&m_mutexVisit);//TODO - QSqlTableModel pModel(NULL, m_db); - pModel.setTable("rule_crowd"); - pModel.setFilter(QObject::tr("camera_id = '%1' ").arg(camId)); - pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange - pModel.select(); +bool LDBTool::updateSdkRule(const SdkRule& sdkRule) +{ + QMutexLocker mutexLocker(&m_mutexVisit);//TODO + QSqlTableModel pModel(NULL, m_db); + pModel.setTable("sdk_rule"); + pModel.setFilter(QObject::tr("cam_id = '%1' and sdk_type = '%2' ").arg(sdkRule.strCamId).arg(sdkRule.nSdkType)); + pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange + pModel.select(); + QSqlRecord rec = pModel.record(0); + rec.setValue("cam_id", sdkRule.strCamId); + rec.setValue("sdk_type", sdkRule.nSdkType); + rec.setValue("area", sdkRule.strAreas); + rec.setValue("ex_area",sdkRule.strExAreas); + rec.setValue("line",sdkRule.strLine); + rec.setValue("ex_line",sdkRule.strExLine); + rec.setValue("alarm_delay",sdkRule.nTriggerDelay); + rec.setValue("tolerance",sdkRule.nTriggerTolerance); + rec.setValue("alarm_num_upper",sdkRule.nAlarmNumUpperLimit); + rec.setValue("alarm_num_lower",sdkRule.nAlarmNumLowerLimit); + rec.setValue("broadcast_area",sdkRule.strBroadcast); + rec.setValue("is_run",sdkRule.nIsRun); + rec.setValue("img_threshold",sdkRule.nThreshold); + rec.setValue("img_quality",sdkRule.nQuality); - ActRule rule; - int rowCount = pModel.rowCount(); - if (rowCount > 0) { - QSqlRecord rec = pModel.record(0); - rule.nTriggertolerance=rec.value("tolerance").toInt(); - rule.nTriggerDelay=rec.value("delay").toInt(); - rule.strAreas=rec.value("area_points").toString(); - rule.nAlarmPeopleNum=rec.value("alarm_people_num").toInt(); - } + int rowCount = pModel.rowCount(); + if (rowCount == 0) + { + pModel.insertRecord(-1, rec); + } + else if (rowCount > 0) + { + pModel.setRecord(0, rec);//TODO + } - return rule; - } + m_db.transaction();//寮�濮嬩簨鍔℃搷浣� + + if (pModel.submitAll()) + { + m_db.commit();//鎻愪氦 + return true; + } + else + { + m_db.rollback();//鍥炴粴 + ERR("updateSdkRule ,pModel_load Error: " << pModel.lastError().text().toStdString()); + return false; + } +} +SdkRuleMap LDBTool::searchSdkRuleByCamId(const QString& camId) +{ + QMutexLocker mutexLocker(&m_mutexVisit);//TODO + QSqlTableModel pModel(NULL, m_db); + pModel.setTable("sdk_rule"); + pModel.setFilter(QObject::tr("cam_id = '%1' ").arg(camId)); + pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange + pModel.select(); + std::map<int,SdkRule> ruleMap; + + //std::vector<SdkRule> ruleVec; + int rowCount = pModel.rowCount(); + for(int i=0;i<rowCount;++i) + { + SdkRule rule; + QSqlRecord rec = pModel.record(i); + rule.strCamId=rec.value("cam_id").toString(); + rule.strAreas=rec.value("area").toString(); + rule.strExAreas=rec.value("ex_area").toString(); + rule.strLine=rec.value("line").toString(); + rule.strExLine=rec.value("ex_line").toString(); + rule.nTriggerDelay=rec.value("alarm_delay").toInt(); + rule.nTriggerTolerance=rec.value("tolerance").toInt(); + rule.nQuality=rec.value("img_quality").toInt(); + rule.nThreshold=rec.value("img_threshold").toInt(); + rule.nAlarmNumUpperLimit=rec.value("alarm_num_upper").toInt(); + rule.nAlarmNumLowerLimit=rec.value("alarm_num_lower").toInt(); + rule.strBroadcast=rec.value("broadcast_area").toString(); + rule.nIsRun=rec.value("is_run").toInt(); + rule.nSdkType=rec.value("sdk_type").toInt(); + ruleMap[rule.nSdkType]=rule; + //ruleVec.push_back(rule); + } + + return ruleMap; +} -- Gitblit v1.8.0