#include "LDBTool.h" #include //#include #include #include #include LDBTool::LDBTool() { connectDB(); } LDBTool::~LDBTool() { delete m_pModel; } void LDBTool::connectDB() { m_db = QSqlDatabase::addDatabase("QSQLITE"); m_db.setDatabaseName("./config.db"); if (m_db.open()) { m_pModel = new QSqlTableModel(NULL, m_db); // qDebug("Database opened successfully"); DBG("Database opened successfully"); } else { qCritical("Can't open database: %s(%s)", m_db.lastError().text().toLocal8Bit().data(), qt_error_string().toLocal8Bit().data()); } } bool LDBTool::insertDeviceTable(Record_Storage_Dev deviceRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("storage_dev"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec = pModel.record(); rec.setGenerated("id", false); // rec.setValue("id",deviceRec.n_id); rec.setValue("storage_dev_id", deviceRec.str_storage_dev_id); rec.setValue("dev_name", deviceRec.str_dev_name); rec.setValue("total_chn", deviceRec.n_total_chn); rec.setValue("all_chn_num", deviceRec.str_all_chn_num); rec.setValue("addr", deviceRec.str_addr); rec.setValue("longitude", deviceRec.str_longitude); rec.setValue("latitude", deviceRec.str_latitude); rec.setValue("ip", deviceRec.str_ip); rec.setValue("port", deviceRec.n_port); rec.setValue("username", deviceRec.str_username); rec.setValue("password", deviceRec.str_password); rec.setValue("start_time", deviceRec.tim_start_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("duration", deviceRec.n_duration); rec.setValue("brand", deviceRec.str_brand); rec.setValue("reserved", deviceRec.str_reserved); pModel.insertRecord(-1, rec);//TODO m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("insertDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("insertLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteDeviceTable(QString str_storage_dev_id) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("storage_dev"); pModel.setFilter(QObject::tr("storage_dev_id = '%1'").arg(str_storage_dev_id)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteDeviceTableAndChnAndSdk(QString str_storage_dev_id) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel_dev(NULL, m_db); pModel_dev.setTable("storage_dev"); pModel_dev.setFilter(QObject::tr("storage_dev_id = '%1'").arg(str_storage_dev_id)); pModel_dev.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_dev.select(); QSqlTableModel pModel_chn(NULL, m_db); pModel_chn.setTable("cam_chn"); pModel_chn.setFilter(QObject::tr("storage_dev_id = '%1'").arg(str_storage_dev_id)); pModel_chn.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_chn.select(); QSqlTableModel pModel_sdk(NULL, m_db); pModel_sdk.setTable("chn_sdk"); pModel_sdk.setFilter(QObject::tr("storage_dev_id = '%1'").arg(str_storage_dev_id)); pModel_sdk.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_sdk.select(); int rowCount_dev = pModel_dev.rowCount(); if (rowCount_dev >= 1) { for (int i = 0; i < rowCount_dev; i++) { pModel_dev.removeRow(i);//TODO } } int rowCount_chn = pModel_chn.rowCount(); if (rowCount_chn >= 1) { for (int i = 0; i < rowCount_chn; i++) { pModel_chn.removeRow(i);//TODO } } int rowCount_sdk = pModel_sdk.rowCount(); if (rowCount_sdk >= 1) { for (int i = 0; i < rowCount_sdk; i++) { pModel_sdk.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel_dev.submitAll() && \ pModel_chn.submitAll() && \ pModel_sdk.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable err ,Database pModel_dev or pModel_chn or pModel_sdk Error: " \ << pModel_dev.lastError().text().toStdString() \ << pModel_chn.lastError().text().toStdString() \ << pModel_sdk.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::updateDeviceTable(Record_Storage_Dev deviceRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("storage_dev"); pModel.setFilter(QObject::tr("storage_dev_id = '%1'").arg(deviceRec.str_storage_dev_id)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); // rec.setGenerated("id", false); rec.setValue("storage_dev_id", deviceRec.str_storage_dev_id); rec.setValue("dev_name", deviceRec.str_dev_name); rec.setValue("total_chn", deviceRec.n_total_chn); rec.setValue("all_chn_num", deviceRec.str_all_chn_num); rec.setValue("addr", deviceRec.str_addr); rec.setValue("longitude", deviceRec.str_longitude); rec.setValue("latitude", deviceRec.str_latitude); rec.setValue("ip", deviceRec.str_ip); rec.setValue("port", deviceRec.n_port); rec.setValue("username", deviceRec.str_username); rec.setValue("password", deviceRec.str_password); rec.setValue("start_time", deviceRec.tim_start_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("duration", deviceRec.n_duration); rec.setValue("brand", deviceRec.str_brand); rec.setValue("reserved", deviceRec.str_reserved); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } int LDBTool::searchDeviceNumber(void) { QSqlTableModel pModel(NULL, m_db); pModel.setTable("storage_dev"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); return rowCount; } std::list LDBTool::searchDeviceTableAll(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list lst; QSqlTableModel pModel(NULL, m_db); pModel.setTable("storage_dev"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { for (int i = 0; i < rowCount; ++i) { Record_Storage_Dev lDeviceRec; QSqlRecord rec = pModel.record(i); lDeviceRec.n_id = rec.value("id").toInt(); lDeviceRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lDeviceRec.str_dev_name = rec.value("dev_name").toString(); lDeviceRec.n_total_chn = rec.value("total_chn").toInt(); lDeviceRec.str_all_chn_num = rec.value("all_chn_num").toString(); lDeviceRec.str_addr = rec.value("addr").toString(); lDeviceRec.str_longitude = rec.value("longitude").toString(); lDeviceRec.str_latitude = rec.value("latitude").toString(); lDeviceRec.str_ip = rec.value("ip").toString(); lDeviceRec.n_port = rec.value("port").toInt(); lDeviceRec.str_username = rec.value("username").toString(); lDeviceRec.str_password = rec.value("password").toString(); lDeviceRec.tim_start_time = QDateTime::fromString(rec.value("start_time").toString(), "yyyy-MM-dd hh:mm:ss"); lDeviceRec.n_duration = rec.value("duration").toInt(); lDeviceRec.str_brand = rec.value("brand").toString(); lDeviceRec.str_reserved = rec.value("reserved").toString(); lst.push_back(lDeviceRec); } } return lst; } Record_Storage_Dev LDBTool::searchDeviceTableByDeviceId(QString strDeviceId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO Record_Storage_Dev lDeviceRec; QSqlTableModel pModel(NULL, m_db); pModel.setTable("storage_dev"); pModel.setFilter(QObject::tr("storage_dev_id = '%1'").arg(strDeviceId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); lDeviceRec.n_id = rec.value("id").toInt(); lDeviceRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lDeviceRec.str_dev_name = rec.value("dev_name").toString(); lDeviceRec.n_total_chn = rec.value("total_chn").toInt(); lDeviceRec.str_all_chn_num = rec.value("all_chn_num").toString(); lDeviceRec.str_addr = rec.value("addr").toString(); lDeviceRec.str_longitude = rec.value("longitude").toString(); lDeviceRec.str_latitude = rec.value("latitude").toString(); lDeviceRec.str_ip = rec.value("ip").toString(); lDeviceRec.n_port = rec.value("port").toInt(); lDeviceRec.str_username = rec.value("username").toString(); lDeviceRec.str_password = rec.value("password").toString(); lDeviceRec.tim_start_time = QDateTime::fromString(rec.value("start_time").toString(), "yyyy-MM-dd hh:mm:ss"); lDeviceRec.n_duration = rec.value("duration").toInt(); lDeviceRec.str_brand = rec.value("brand").toString(); lDeviceRec.str_reserved = rec.value("reserved").toString(); } return lDeviceRec; } int LDBTool::searchDurationByDeviceId(QString strDeviceId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO int nDuration = 1;//没查到就默认是1小时 QSqlTableModel pModel(NULL, m_db); pModel.setTable("storage_dev"); pModel.setFilter(QObject::tr("storage_dev_id = '%1'").arg(strDeviceId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); nDuration = rec.value("duration").toInt(); } return nDuration; } //cam_dev========================== /// /// \brief LDBTool::insertCamDevTable /// \param channelRec /// \return //============================= bool LDBTool::insertCamDevTable(Record_Cam_Dev channelRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_dev"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec = pModel.record(); rec.setGenerated("id", false); rec.setValue("cam_dev_id", channelRec.str_cam_dev_id); rec.setValue("name", channelRec.str_name); rec.setValue("addr", channelRec.str_addr); rec.setValue("longitude", channelRec.str_longitude); rec.setValue("latitude", channelRec.str_latitude); rec.setValue("ip", channelRec.str_ip); rec.setValue("port", channelRec.n_port); rec.setValue("username", channelRec.str_username); rec.setValue("password", channelRec.str_password); rec.setValue("brand", channelRec.str_brand); rec.setValue("reserved", channelRec.str_reserved); rec.setValue("type", channelRec.type); pModel.insertRecord(-1, rec);//TODO m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("insertLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("insertLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteCamDevandSdkByCamID(QString strCamId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel_cam(NULL, m_db); pModel_cam.setTable("cam_dev"); pModel_cam.setFilter(QObject::tr("cam_dev_id = '%1'").arg(strCamId)); 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("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) { for (int i = 0; i < rowCount_cam; i++) { pModel_cam.removeRow(i);//TODO } } int rowCount_sdk = pModel_sdk.rowCount(); if (rowCount_sdk >= 1) { for (int i = 0; i < rowCount_sdk; i++) { pModel_sdk.removeRow(i);//TODO } } 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_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_week.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::updateCamDevTable(Record_Cam_Dev camRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_dev"); pModel.setFilter( QObject::tr("cam_dev_id = '%1'").arg(camRec.str_cam_dev_id)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); rec.setValue("cam_dev_id", camRec.str_cam_dev_id); rec.setValue("name", camRec.str_name); rec.setValue("addr", camRec.str_addr); rec.setValue("longitude", camRec.str_longitude); rec.setValue("latitude", camRec.str_latitude); rec.setValue("ip", camRec.str_ip); rec.setValue("port", camRec.n_port); rec.setValue("username", camRec.str_username); rec.setValue("password", camRec.str_password); rec.setValue("brand", camRec.str_brand); rec.setValue("reserved", camRec.str_reserved); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::updateCamDevSnapshotbyID(const QString &strID, const QString &imgUrl) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_dev"); pModel.setFilter( QObject::tr("cam_dev_id = '%1'").arg(strID)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); rec.setValue("reserved", imgUrl); int rowCount = pModel.rowCount(); if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateCamDevSnapshot err ,Database Error: " << pModel.lastError().text().toStdString()); return false; } } bool LDBTool::updateCamDevSnapshot(const QString &strIp, const QString &imgUrl) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_dev"); pModel.setFilter( QObject::tr("ip = '%1'").arg(strIp)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); rec.setValue("reserved", imgUrl); int rowCount = pModel.rowCount(); if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateCamDevSnapshot err ,Database Error: " << pModel.lastError().text().toStdString()); return false; } } int LDBTool::searchCamDevNumber(void) { QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_dev"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); return rowCount; } //查询摄像机列表 std::list LDBTool::searchCamDevTableAll(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list lst; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_dev"); pModel.setFilter(QObject::tr("cam_dev_id != '' and cam_dev_id is not null")); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { for (int i = 0; i < rowCount; ++i) { Record_Cam_Dev lChannelRec; QSqlRecord rec = pModel.record(i); lChannelRec.n_id = rec.value("id").toInt(); lChannelRec.type = rec.value("type").toInt(); lChannelRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); lChannelRec.str_name = rec.value("name").toString(); lChannelRec.str_addr = rec.value("addr").toString(); lChannelRec.str_longitude = rec.value("longitude").toString(); lChannelRec.str_latitude = rec.value("latitude").toString(); lChannelRec.str_ip = rec.value("ip").toString(); lChannelRec.n_port = rec.value("port").toInt(); lChannelRec.str_username = rec.value("username").toString(); lChannelRec.str_password = rec.value("password").toString(); lChannelRec.str_brand = rec.value("brand").toString(); lChannelRec.str_reserved = rec.value("reserved").toString(); lst.push_back(lChannelRec); } } return lst; } bool LDBTool::searchCamDevByCamId(QString strCamId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list 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========================== /// /// \brief LDBTool::insertChannelTable /// \param channelRec /// \return //============================= bool LDBTool::insertChannelTable(Record_Cam_Chn channelRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_chn"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec = pModel.record(); rec.setGenerated("id", false); rec.setValue("storage_dev_id", channelRec.str_storage_dev_id); rec.setValue("chn", channelRec.n_chn); rec.setValue("name", channelRec.str_name); rec.setValue("addr", channelRec.str_addr); rec.setValue("longitude", channelRec.str_longitude); rec.setValue("latitude", channelRec.str_latitude); rec.setValue("do_time", channelRec.tim_do_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("update_time", channelRec.tim_update_time.toString("yyyy-MM-dd hh:mm:ss")); // rec.setValue("cam_dev_id", channelRec.str_cam_dev_id); // rec.setValue("ip", channelRec.str_ip); // rec.setValue("port", channelRec.n_port); // rec.setValue("username", channelRec.str_username); // rec.setValue("password", channelRec.str_password); // rec.setValue("brand", channelRec.str_brand); rec.setValue("reserved", channelRec.str_reserved); pModel.insertRecord(-1, rec);//TODO m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("insertLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("insertLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteChannelTable(QString strDeviceId, int nChannelId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_chn"); pModel.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2'").arg(strDeviceId).arg(nChannelId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteChannelTableByCamID(QString strCamId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel_cam(NULL, m_db); pModel_cam.setTable("cam_chn"); pModel_cam.setFilter(QObject::tr("cam_dev_id = '%1'").arg(strCamId)); pModel_cam.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_cam.select(); QSqlTableModel pModel_sdk(NULL, m_db); pModel_sdk.setTable("chn_sdk"); pModel_sdk.setFilter(QObject::tr("cam_dev_id = '%1'").arg(strCamId)); pModel_sdk.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_sdk.select(); int rowCount_cam = pModel_cam.rowCount(); if (rowCount_cam >= 1) { for (int i = 0; i < rowCount_cam; i++) { pModel_cam.removeRow(i);//TODO } } int rowCount_sdk = pModel_sdk.rowCount(); if (rowCount_sdk >= 1) { for (int i = 0; i < rowCount_sdk; i++) { pModel_sdk.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel_cam.submitAll() && \ pModel_sdk.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()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::updateChannelTable(Record_Cam_Chn channelRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_chn"); pModel.setFilter( QObject::tr("storage_dev_id = '%1' and chn = '%2'").arg(channelRec.str_storage_dev_id).arg(channelRec.n_chn)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); // rec.setGenerated("id", false); rec.setValue("storage_dev_id", channelRec.str_storage_dev_id); rec.setValue("chn", channelRec.n_chn); rec.setValue("name", channelRec.str_name); rec.setValue("addr", channelRec.str_addr); rec.setValue("longitude", channelRec.str_longitude); rec.setValue("latitude", channelRec.str_latitude); rec.setValue("do_time", channelRec.tim_do_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("update_time", channelRec.tim_update_time.toString("yyyy-MM-dd hh:mm:ss")); // rec.setValue("cam_dev_id", channelRec.str_cam_dev_id); // rec.setValue("ip", channelRec.str_ip); // rec.setValue("port", channelRec.n_port); // rec.setValue("username", channelRec.str_username); // rec.setValue("password", channelRec.str_password); // rec.setValue("brand", channelRec.str_brand); rec.setValue("reserved", channelRec.str_reserved); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } std::list LDBTool::searchChannelTableAll(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list lst; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_chn"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { for (int i = 0; i < rowCount; ++i) { Record_Cam_Chn lChannelRec; QSqlRecord rec = pModel.record(i); lChannelRec.n_id = rec.value("id").toInt(); lChannelRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lChannelRec.n_chn = rec.value("chn").toInt(); lChannelRec.str_name = rec.value("name").toString(); lChannelRec.str_addr = rec.value("addr").toString(); lChannelRec.str_longitude = rec.value("longitude").toString(); lChannelRec.str_latitude = rec.value("latitude").toString(); lChannelRec.tim_do_time = QDateTime::fromString(rec.value("do_time").toString(), "yyyy-MM-dd hh:mm:ss"); lChannelRec.tim_update_time = QDateTime::fromString(rec.value("update_time").toString(), "yyyy-MM-dd hh:mm:ss"); // lChannelRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); // lChannelRec.str_ip = rec.value("ip").toString(); // lChannelRec.n_port = rec.value("port").toInt(); // lChannelRec.str_username = rec.value("username").toString(); // lChannelRec.str_password = rec.value("password").toString(); // lChannelRec.str_brand = rec.value("brand").toString(); lChannelRec.str_reserved = rec.value("reserved").toString(); lst.push_back(lChannelRec); } } return lst; } //查询tongdao摄像机列表 std::list LDBTool::searchChannelTableCamType(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list lst; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_chn"); pModel.setFilter(QObject::tr("cam_dev_id != '' and cam_dev_id is not null")); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { for (int i = 0; i < rowCount; ++i) { Record_Cam_Chn lChannelRec; QSqlRecord rec = pModel.record(i); lChannelRec.n_id = rec.value("id").toInt(); lChannelRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lChannelRec.n_chn = rec.value("chn").toInt(); lChannelRec.str_name = rec.value("name").toString(); lChannelRec.str_addr = rec.value("addr").toString(); lChannelRec.str_longitude = rec.value("longitude").toString(); lChannelRec.str_latitude = rec.value("latitude").toString(); lChannelRec.tim_do_time = QDateTime::fromString(rec.value("do_time").toString(), "yyyy-MM-dd hh:mm:ss"); lChannelRec.tim_update_time = QDateTime::fromString(rec.value("update_time").toString(), "yyyy-MM-dd hh:mm:ss"); // lChannelRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); // lChannelRec.str_ip = rec.value("ip").toString(); // lChannelRec.n_port = rec.value("port").toInt(); // lChannelRec.str_username = rec.value("username").toString(); // lChannelRec.str_password = rec.value("password").toString(); // lChannelRec.str_brand = rec.value("brand").toString(); lChannelRec.str_reserved = rec.value("reserved").toString(); lst.push_back(lChannelRec); } } return lst; } std::list LDBTool::searchChannelTableByDevlId(QString strDeviceId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list lst; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_chn"); pModel.setFilter(QObject::tr(" storage_dev_id = '%1'").arg(strDeviceId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { for (int i = 0; i < rowCount; ++i) { Record_Cam_Chn lChannelRec; QSqlRecord rec = pModel.record(i); lChannelRec.n_id = rec.value("id").toInt(); lChannelRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lChannelRec.n_chn = rec.value("chn").toInt(); lChannelRec.str_name = rec.value("name").toString(); lChannelRec.str_addr = rec.value("addr").toString(); lChannelRec.str_longitude = rec.value("longitude").toString(); lChannelRec.str_latitude = rec.value("latitude").toString(); lChannelRec.tim_do_time = QDateTime::fromString(rec.value("do_time").toString(), "yyyy-MM-dd hh:mm:ss"); lChannelRec.tim_update_time = QDateTime::fromString(rec.value("update_time").toString(), "yyyy-MM-dd hh:mm:ss"); // lChannelRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); // lChannelRec.str_ip = rec.value("ip").toString(); // lChannelRec.n_port = rec.value("port").toInt(); // lChannelRec.str_username = rec.value("username").toString(); // lChannelRec.str_password = rec.value("password").toString(); // lChannelRec.str_brand = rec.value("brand").toString(); lChannelRec.str_reserved = rec.value("reserved").toString(); lst.push_back(lChannelRec); } } return lst; } Record_Cam_Chn LDBTool::searchChannelTableByChannelId(QString strDeviceId, int nChannelId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO Record_Cam_Chn lChannelRec; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_chn"); pModel.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2'").arg(strDeviceId).arg(nChannelId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); lChannelRec.n_id = rec.value("id").toInt(); lChannelRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lChannelRec.n_chn = rec.value("chn").toInt(); lChannelRec.str_name = rec.value("name").toString(); lChannelRec.str_addr = rec.value("addr").toString(); lChannelRec.str_longitude = rec.value("longitude").toString(); lChannelRec.str_latitude = rec.value("latitude").toString(); lChannelRec.tim_do_time = QDateTime::fromString(rec.value("do_time").toString(), "yyyy-MM-dd hh:mm:ss"); lChannelRec.tim_update_time = QDateTime::fromString(rec.value("update_time").toString(), \ "yyyy-MM-dd hh:mm:ss"); // lChannelRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); // lChannelRec.str_ip = rec.value("ip").toString(); // lChannelRec.n_port = rec.value("port").toInt(); // lChannelRec.str_username = rec.value("username").toString(); // lChannelRec.str_password = rec.value("password").toString(); // lChannelRec.str_brand = rec.value("brand").toString(); lChannelRec.str_reserved = rec.value("reserved").toString(); } return lChannelRec; } Record_Cam_Chn LDBTool::searchOldestRecordfromChnTableByUpdateTime(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO Record_Cam_Chn lChannelRec; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_chn"); pModel.setFilter(QObject::tr( "storage_dev_id != '' and storage_dev_id is not null and chn != 0 and do_time != '' and do_time is not null")); pModel.setSort(8, Qt::AscendingOrder); //id属性,即第0列,升序排列,找到时间最旧的记录 pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); lChannelRec.n_id = rec.value("id").toInt(); lChannelRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lChannelRec.n_chn = rec.value("chn").toInt(); lChannelRec.str_name = rec.value("name").toString(); lChannelRec.str_addr = rec.value("addr").toString(); lChannelRec.str_longitude = rec.value("longitude").toString(); lChannelRec.str_latitude = rec.value("latitude").toString(); lChannelRec.tim_do_time = QDateTime::fromString(rec.value("do_time").toString(), "yyyy-MM-dd hh:mm:ss"); lChannelRec.tim_update_time = QDateTime::fromString(rec.value("update_time").toString(), \ "yyyy-MM-dd hh:mm:ss"); // lChannelRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); // lChannelRec.str_ip = rec.value("ip").toString(); // lChannelRec.n_port = rec.value("port").toInt(); // lChannelRec.str_username = rec.value("username").toString(); // lChannelRec.str_password = rec.value("password").toString(); // lChannelRec.str_brand = rec.value("brand").toString(); lChannelRec.str_reserved = rec.value("reserved").toString(); rec.setValue("update_time", QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")); pModel.setRecord(0, rec);//TODO m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 } else { m_db.rollback();//回滚 ERR("updateLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); } } return lChannelRec; } Record_Cam_Chn LDBTool::searchOldestRecordfromChnTableByChannelId(QString strDeviceId, int nChannelId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO Record_Cam_Chn lChannelRec; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_chn"); pModel.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2'").arg(strDeviceId).arg(nChannelId)); //TODO pModel.setSort(7, Qt::AscendingOrder); //id属性,即第0列,升序排列 pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); lChannelRec.n_id = rec.value("id").toInt(); lChannelRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lChannelRec.n_chn = rec.value("chn").toInt(); lChannelRec.str_name = rec.value("name").toString(); lChannelRec.str_addr = rec.value("addr").toString(); lChannelRec.str_longitude = rec.value("longitude").toString(); lChannelRec.str_latitude = rec.value("latitude").toString(); lChannelRec.tim_do_time = QDateTime::fromString(rec.value("do_time").toString(), "yyyy-MM-dd hh:mm:ss"); lChannelRec.tim_update_time = QDateTime::fromString(rec.value("update_time").toString(), \ "yyyy-MM-dd hh:mm:ss"); // lChannelRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); // lChannelRec.str_ip = rec.value("ip").toString(); // lChannelRec.n_port = rec.value("port").toInt(); // lChannelRec.str_username = rec.value("username").toString(); // lChannelRec.str_password = rec.value("password").toString(); // lChannelRec.str_brand = rec.value("brand").toString(); lChannelRec.str_reserved = rec.value("reserved").toString(); rec.setValue("update_time", QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")); pModel.setRecord(0, rec);//TODO m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 } else { m_db.rollback();//回滚 ERR("updateLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); } } return lChannelRec; } Record_Cam_Chn LDBTool::searchNewestRecordfromChnTableByChannelId(QString strDeviceId, int nChannelId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO Record_Cam_Chn lChannelRec; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_chn"); pModel.setFilter(QObject::tr(" storage_dev_id = '%1' and chn = '%2'").arg(strDeviceId).arg(nChannelId)); //TODO pModel.setSort(7, Qt::DescendingOrder); //id属性,即第0列,升序排列 pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); lChannelRec.n_id = rec.value("id").toInt(); lChannelRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lChannelRec.n_chn = rec.value("chn").toInt(); lChannelRec.str_name = rec.value("name").toString(); lChannelRec.str_addr = rec.value("addr").toString(); lChannelRec.str_longitude = rec.value("longitude").toString(); lChannelRec.str_latitude = rec.value("latitude").toString(); lChannelRec.tim_do_time = QDateTime::fromString(rec.value("do_time").toString(), "yyyy-MM-dd hh:mm:ss"); lChannelRec.tim_update_time = QDateTime::fromString(rec.value("update_time").toString(), \ "yyyy-MM-dd hh:mm:ss"); // lChannelRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); // lChannelRec.str_ip = rec.value("ip").toString(); // lChannelRec.n_port = rec.value("port").toInt(); // lChannelRec.str_username = rec.value("username").toString(); // lChannelRec.str_password = rec.value("password").toString(); // lChannelRec.str_brand = rec.value("brand").toString(); lChannelRec.str_reserved = rec.value("reserved").toString(); } return lChannelRec; } /// /// \brief LDBTool::insertloadFileTable /// \param channelRec /// \return /// bool LDBTool::insertLoadFileTable(Record_Load_File_info loadfileRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("load_file_info"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec = pModel.record(); rec.setGenerated("id", false); rec.setValue("storage_dev_id", loadfileRec.str_storage_dev_id); rec.setValue("chn", loadfileRec.n_chn); rec.setValue("do_time", loadfileRec.tim_do_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("finish_flag", loadfileRec.b_finish_flag); rec.setValue("path", loadfileRec.str_load_file_path); rec.setValue("update_time", loadfileRec.tim_update_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("reserved", loadfileRec.str_reserved); pModel.insertRecord(-1, rec);//TODO m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("insertLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("insertLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteLoadFileTable(QString strDeviceId, int nChannelId, QDateTime tim_startTime) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("load_file_info"); pModel.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2' and do_time = '%3'")\ .arg(strDeviceId).arg(nChannelId).arg(tim_startTime.toString("yyyy-MM-dd hh:mm:ss"))); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteLoadFileTablebyDevID(QString strDeviceId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("load_file_info"); pModel.setFilter(QObject::tr("storage_dev_id = '%1'").arg(strDeviceId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::updateLoadFileTable(Record_Load_File_info loadfileRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("load_file_info"); pModel.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2' and do_time = '%3'")\ .arg(loadfileRec.str_storage_dev_id).arg(loadfileRec.n_chn)\ .arg(loadfileRec.tim_do_time.toString("yyyy-MM-dd hh:mm:ss"))); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); // rec.setGenerated("id", false); rec.setValue("storage_dev_id", loadfileRec.str_storage_dev_id); rec.setValue("chn", loadfileRec.n_chn); rec.setValue("do_time", loadfileRec.tim_do_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("finish_flag", loadfileRec.b_finish_flag); rec.setValue("path", loadfileRec.str_load_file_path); rec.setValue("update_time", loadfileRec.tim_update_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("reserved", loadfileRec.str_reserved); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable err ,Database Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } std::list LDBTool::searchLoadFileTableAll(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list lst; QSqlTableModel pModel(NULL, m_db); pModel.setTable("load_file_info"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { for (int i = 0; i < rowCount; ++i) { Record_Load_File_info lRec; QSqlRecord rec = pModel.record(i); if (!rec.value("finish_flag").toBool()) { lRec.n_id = rec.value("id").toInt(); lRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lRec.n_chn = rec.value("chn").toInt(); lRec.tim_do_time = rec.value("do_time").toDateTime(); lRec.tim_do_time = QDateTime::fromString(rec.value("do_time").toString(), "yyyy-MM-dd hh:mm:ss"); lRec.b_finish_flag = rec.value("finish_flag").toBool(); lRec.str_load_file_path = rec.value("path").toString(); lRec.tim_update_time = QDateTime::fromString(rec.value("update_time").toString(), "yyyy-MM-dd hh:mm:ss"); lRec.str_reserved = rec.value("reserved").toString(); lst.push_back(lRec); } } } return lst; } Record_Load_File_info LDBTool::searchOldestRecordfromLoadTableByUpdateTime(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO Record_Load_File_info lRec; QSqlTableModel pModel(NULL, m_db); pModel.setTable("load_file_info"); pModel.setFilter(QObject::tr("finish_flag = 1")); pModel.setSort(6, Qt::AscendingOrder); //id属性,即第0列,升序排列,找到时间最旧的记录 pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); lRec.n_id = rec.value("id").toInt(); lRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lRec.n_chn = rec.value("chn").toInt(); lRec.tim_do_time = QDateTime::fromString(rec.value("do_time").toString(), "yyyy-MM-dd hh:mm:ss"); lRec.b_finish_flag = rec.value("finish_flag").toBool(); lRec.str_load_file_path = rec.value("path").toString(); lRec.tim_update_time = QDateTime::fromString(rec.value("update_time").toString(), "yyyy-MM-dd hh:mm:ss"); lRec.str_reserved = rec.value("reserved").toString(); } else { ERR("rowCount <=0"); } return lRec; } /// /// \brief insertLoadFileTableAndUpdateChannelTable /// \param loadfileRec /// \param channelRec /// \return /// bool LDBTool::insertLoadFileTableAndUpdateChannelTable(Record_Load_File_info loadfileRec, Record_Cam_Chn channelRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel_load(NULL, m_db); pModel_load.setTable("load_file_info"); pModel_load.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec_load = pModel_load.record(); rec_load.setGenerated("id", false); rec_load.setValue("storage_dev_id", loadfileRec.str_storage_dev_id); rec_load.setValue("chn", loadfileRec.n_chn); rec_load.setValue("do_time", loadfileRec.tim_do_time.toString("yyyy-MM-dd hh:mm:ss")); rec_load.setValue("finish_flag", loadfileRec.b_finish_flag); rec_load.setValue("path", loadfileRec.str_load_file_path); rec_load.setValue("update_time", loadfileRec.tim_update_time.toString("yyyy-MM-dd hh:mm:ss")); rec_load.setValue("reserved", loadfileRec.str_reserved); ///////// QSqlTableModel pModel_chn(NULL, m_db); pModel_chn.setTable("cam_chn"); pModel_chn.setFilter( QObject::tr("storage_dev_id = '%1' and chn = '%2'").arg(channelRec.str_storage_dev_id).arg(channelRec.n_chn)); pModel_chn.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_chn.select(); QSqlRecord rec_chn = pModel_chn.record(0); // rec_chn.setGenerated("id", false); rec_chn.setValue("storage_dev_id", channelRec.str_storage_dev_id); rec_chn.setValue("chn", channelRec.n_chn); rec_chn.setValue("name", channelRec.str_name); rec_chn.setValue("addr", channelRec.str_addr); rec_chn.setValue("longitude", channelRec.str_longitude); rec_chn.setValue("latitude", channelRec.str_latitude); rec_chn.setValue("do_time", channelRec.tim_do_time.toString("yyyy-MM-dd hh:mm:ss")); rec_chn.setValue("update_time", channelRec.tim_update_time.toString("yyyy-MM-dd hh:mm:ss")); rec_chn.setValue("reserved", channelRec.str_reserved); pModel_load.insertRecord(-1, rec_load); int rowCount = pModel_chn.rowCount(); if (rowCount == 0) { pModel_chn.insertRecord(-1, rec_chn); } else if (rowCount > 0) { pModel_chn.setRecord(0, rec_chn);//TODO } m_db.transaction();//开始事务操作 if (pModel_load.submitAll() && pModel_chn.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("insertLDeviceTable ,pModel_load Error: " << pModel_load.lastError().text().toStdString() << " pModel_chn " << pModel_load.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("insertLDeviceTable"),\ // QObject::tr("Database Error: %1").arg(pModel_load.lastError().text()),\ // QObject::tr("Database Error: %1").arg(pModel_chn.lastError().text())); return false; } } /// /// \brief LDBTool::insertCutVideoTable /// \param cutVideoRec /// \return /// bool LDBTool::insertCutVideoTable(Record_Cut_Video_info cutVideoRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cut_video_info"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec = pModel.record(); rec.setGenerated("id", false); rec.setValue("storage_dev_id", cutVideoRec.str_storage_dev_id); rec.setValue("chn", cutVideoRec.n_chn); rec.setValue("src_path", cutVideoRec.str_src_path); rec.setValue("dst_path", cutVideoRec.str_dst_path); rec.setValue("total", cutVideoRec.n_total); rec.setValue("finish_flag", cutVideoRec.b_finish_flag); rec.setValue("update_time", cutVideoRec.tim_update_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("reserved", cutVideoRec.str_reserved); pModel.insertRecord(-1, rec);//TODO m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("insertLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("insertLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteCutVideoTable(QString strDeviceId, int nChannelId, QString strSrcPath) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cut_video_info"); pModel.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2' and src_path = '%3'")\ .arg(strDeviceId).arg(nChannelId).arg(strSrcPath)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteCutVideoTablebyDevID(QString strDeviceId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cut_video_info"); pModel.setFilter(QObject::tr("storage_dev_id = '%1'").arg(strDeviceId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); return false; } } bool LDBTool::updateCutVideoTable(Record_Cut_Video_info cutVideoRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cut_video_info"); pModel.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2' and src_path = '%3'")\ .arg(cutVideoRec.str_storage_dev_id).arg(cutVideoRec.n_chn).arg(cutVideoRec.str_src_path)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); // rec.setGenerated("id", false); rec.setValue("storage_dev_id", cutVideoRec.str_storage_dev_id); rec.setValue("chn", cutVideoRec.n_chn); rec.setValue("src_path", cutVideoRec.str_src_path); rec.setValue("dst_path", cutVideoRec.str_dst_path); rec.setValue("total", cutVideoRec.n_total); rec.setValue("finish_flag", cutVideoRec.b_finish_flag); rec.setValue("update_time", cutVideoRec.tim_update_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("reserved", cutVideoRec.str_reserved); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::updateCutVideoTable(std::string src_path, std::string dst_path, int total) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cut_video_info"); pModel.setFilter(QObject::tr("src_path = '%1'").arg(QString::fromStdString(src_path))); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); /*QSqlRecord rec = pModel.record(); rec.setValue("dst_path",QString::fromStdString(dst_path)); rec.setValue("total",total); rec.setValue("finish_flag",1); rec.setValue("update_time",QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));*/ int rowCount = pModel.rowCount(); /*if(rowCount == 0) { pModel.insertRecord(-1,rec); }else */if (rowCount > 0) { QSqlRecord rec = pModel.record(0); rec.setValue("dst_path", QString::fromStdString(dst_path)); rec.setValue("total", total); rec.setValue("finish_flag", 1); rec.setValue("update_time", QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")); pModel.setRecord(0, rec);//TODO } else { return false; } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } std::list LDBTool::searchCutVideoTableAll(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list lst; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cut_video_info"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { for (int i = 0; i < rowCount; ++i) { Record_Cut_Video_info lRec; QSqlRecord rec = pModel.record(i); if (!rec.value("finish_flag").toBool()) { lRec.n_id = rec.value("id").toInt(); lRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lRec.n_chn = rec.value("chn").toInt(); lRec.str_src_path = rec.value("src_path").toString(); lRec.str_dst_path = rec.value("dst_path").toString(); lRec.n_total = rec.value("total").toInt(); lRec.b_finish_flag = rec.value("finish_flag").toBool(); lRec.tim_update_time = QDateTime::fromString(rec.value("update_time").toString(), "yyyy-MM-dd hh:mm:ss"); lRec.str_reserved = rec.value("reserved").toString(); lst.push_back(lRec); } } } return lst; } Record_Cut_Video_info LDBTool::searchOldestRecordfromCutTableByUpdateTime(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO Record_Cut_Video_info lRec; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cut_video_info"); pModel.setFilter(QObject::tr("finish_flag = 1")); pModel.setSort(7, Qt::AscendingOrder); //id属性,即第0列,升序排列,找到时间最旧的记录 pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); lRec.n_id = rec.value("id").toInt(); lRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lRec.n_chn = rec.value("chn").toInt(); lRec.str_src_path = rec.value("src_path").toString(); lRec.str_dst_path = rec.value("dst_path").toString(); lRec.n_total = rec.value("total").toInt(); lRec.b_finish_flag = rec.value("finish_flag").toBool(); lRec.tim_update_time = QDateTime::fromString(rec.value("update_time").toString(), "yyyy-MM-dd hh:mm:ss"); lRec.str_reserved = rec.value("reserved").toString(); } return lRec; } /// /// \brief insertCutVideoTableandDeleteLoadFileTable /// \param cutVideoRec /// \param strDeviceId /// \param nChannelId /// \param tim_loadStartTime /// \return /// bool LDBTool::insertCutVideoTableAndDeleteLoadFileTable(Record_Cut_Video_info cutVideoRec, QString strDeviceId, int nChannelId, QDateTime tim_loadStartTime) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel_cut(NULL, m_db); pModel_cut.setTable("cut_video_info"); pModel_cut.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec = pModel_cut.record(); rec.setGenerated("id", false); rec.setValue("storage_dev_id", cutVideoRec.str_storage_dev_id); rec.setValue("chn", cutVideoRec.n_chn); rec.setValue("src_path", cutVideoRec.str_src_path); rec.setValue("dst_path", cutVideoRec.str_dst_path); rec.setValue("total", cutVideoRec.n_total); rec.setValue("finish_flag", cutVideoRec.b_finish_flag); rec.setValue("update_time", cutVideoRec.tim_update_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("reserved", cutVideoRec.str_reserved); QSqlTableModel pModel_load(NULL, m_db); pModel_load.setTable("load_file_info"); pModel_load.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2' and do_time = '%3'")\ .arg(strDeviceId).arg(nChannelId).arg(tim_loadStartTime.toString("yyyy-MM-dd hh:mm:ss"))); pModel_load.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_load.select(); pModel_cut.insertRecord(-1, rec); int rowCount = pModel_load.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel_load.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel_cut.submitAll() && pModel_load.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_cut Error: " << pModel_cut.lastError().text().toStdString() << " " << pModel_load.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("insertLDeviceTable"),\ // QObject::tr("Database Error: %1").arg(pModel_cut.lastError().text()),\ // QObject::tr("Database Error: %1").arg(pModel_load.lastError().text())); return false; } } /// /// \brief LDBTool::insertSdkHdlTable /// \param sdkHdlRec /// \return /// bool LDBTool::insertSdkHdlTable(Record_Sdk_Hdl_info sdkHdlRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("sdk_hdl_info"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec = pModel.record(); rec.setGenerated("id", false); rec.setValue("storage_dev_id", sdkHdlRec.str_storage_dev_id); rec.setValue("chn", sdkHdlRec.n_chn); rec.setValue("src_path", sdkHdlRec.str_src_path); rec.setValue("total", sdkHdlRec.n_total); rec.setValue("pos", sdkHdlRec.n_pos); rec.setValue("reserved", sdkHdlRec.str_reserved); pModel.insertRecord(-1, rec);//TODO m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("insertLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("insertLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteSdkHdlTable(QString strSrcPath) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("sdk_hdl_info"); pModel.setFilter(QObject::tr("src_path = '%1'").arg(strSrcPath)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteSdkHdlTablebyDevID(QString strDevId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("sdk_hdl_info"); pModel.setFilter(QObject::tr("storage_dev_id = '%1'").arg(strDevId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::updateSdkHdlTable(Record_Sdk_Hdl_info sdkHdlRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("sdk_hdl_info"); pModel.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2' and src_path = '%3'")\ .arg(sdkHdlRec.str_storage_dev_id).arg(sdkHdlRec.n_chn).arg(sdkHdlRec.str_src_path)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); // rec.setGenerated("id", false); rec.setValue("storage_dev_id", sdkHdlRec.str_storage_dev_id); rec.setValue("chn", sdkHdlRec.n_chn); rec.setValue("src_path", sdkHdlRec.str_src_path); rec.setValue("total", sdkHdlRec.n_total); rec.setValue("pos", sdkHdlRec.n_pos); rec.setValue("reserved", sdkHdlRec.str_reserved); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::updateSdkHdlTablePos(QString str_src_path, int pos) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("sdk_hdl_info"); pModel.setFilter(QObject::tr("src_path = '%1'").arg(str_src_path)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); /*QSqlRecord rec = pModel.record(); rec.setValue("pos",pos);*/ int rowCount = pModel.rowCount(); /*if(rowCount == 0) { pModel.insertRecord(-1,rec); }else */if (rowCount > 0) { QSqlRecord rec = pModel.record(0); rec.setValue("pos", pos); pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } std::list LDBTool::searchSdkHdlTableAll(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list lst; QSqlTableModel pModel(NULL, m_db); pModel.setTable("sdk_hdl_info"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { for (int i = 0; i < rowCount; ++i) { Record_Sdk_Hdl_info lRec; QSqlRecord rec = pModel.record(i); lRec.n_id = rec.value("id").toInt(); lRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lRec.n_chn = rec.value("chn").toInt(); lRec.str_src_path = rec.value("src_path").toString(); lRec.n_total = rec.value("total").toInt(); lRec.n_pos = rec.value("pos").toInt(); lRec.str_reserved = rec.value("reserved").toString(); lst.push_back(lRec); } } return lst; } //Record_Sdk_Hdl_info LDBTool::searchOldestRecordfromSdkHdlTableByUpdateTime(void) //{ // Record_Sdk_Hdl_info lRec; // QSqlTableModel pModel(NULL,m_db); // pModel.setTable("sdk_hdl_info"); // pModel.setSort(7,Qt::AscendingOrder); //id属性,即第0列,升序排列,找到时间最旧的记录 // pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange // pModel.select(); // int rowCount = pModel.rowCount(); // if (rowCount > 0) // { // QSqlRecord rec = pModel.record(0); // lRec.n_id = rec.value("id").toInt(); // lRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); // lRec.n_chn = rec.value("chn").toInt(); // lRec.str_src_path = rec.value("src_path").toString(); // lRec.n_total = rec.value("total").toInt(); // lRec.n_pos = rec.value("pos").toInt(); // lRec.str_reserved = rec.value("reserved").toString(); // } // return lRec; //} /// /// \brief insertSdkHdlTableAndDeleteCutVideoTable /// \param sdkHdlRec /// \param strDeviceId /// \param nChannelId /// \param strCutSrcPath /// \return /// bool LDBTool::insertSdkHdlTableAndDeleteCutVideoTable(Record_Sdk_Hdl_info sdkHdlRec, \ QString strDeviceId, \ int nChannelId, \ QString strCutSrcPath) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel_sdkhdl(NULL, m_db); pModel_sdkhdl.setTable("sdk_hdl_info"); pModel_sdkhdl.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec = pModel_sdkhdl.record(); rec.setGenerated("id", false); rec.setValue("storage_dev_id", sdkHdlRec.str_storage_dev_id); rec.setValue("chn", sdkHdlRec.n_chn); rec.setValue("src_path", sdkHdlRec.str_src_path); rec.setValue("total", sdkHdlRec.n_total); rec.setValue("pos", sdkHdlRec.n_pos); rec.setValue("reserved", sdkHdlRec.str_reserved); //////// QSqlTableModel pModel_cut(NULL, m_db); pModel_cut.setTable("cut_video_info"); pModel_cut.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2' and src_path = '%3'")\ .arg(strDeviceId).arg(nChannelId).arg(strCutSrcPath)); pModel_cut.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_cut.select(); pModel_sdkhdl.insertRecord(-1, rec); int rowCount = pModel_cut.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel_cut.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel_sdkhdl.submitAll() && pModel_cut.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_load Error: " << pModel_sdkhdl.lastError().text().toStdString() << " " << pModel_cut.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("insertLDeviceTable"),\ QObject::tr("Database Error: %1").arg(pModel_sdkhdl.lastError().text()),\ QObject::tr("Database Error: %1").arg(pModel_cut.lastError().text())); return false; } } /// /// \brief insertCamSdkTable /// \param camSdkRec /// \return /// bool LDBTool::insertCamSdkTable(Record_Cam_Sdk camSdkRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_sdk"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec = pModel.record(); rec.setGenerated("id", false); rec.setValue("cam_dev_id", camSdkRec.str_cam_dev_id); rec.setValue("sdks", camSdkRec.str_sdks); rec.setValue("det_thr", camSdkRec.str_det_thr); rec.setValue("cmp_thr", camSdkRec.str_cmp_thr); rec.setValue("reserved", camSdkRec.str_reserved); pModel.insertRecord(-1, rec);//TODO m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("insertLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("insertLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteCamSdkTable(QString strCamDevId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_sdk"); pModel.setFilter(QObject::tr("cam_dev_id = '%1'").arg(strCamDevId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::updateCamSdkTable(Record_Cam_Sdk camSdkRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_sdk"); pModel.setFilter(QObject::tr("cam_dev_id = '%1'").arg(camSdkRec.str_cam_dev_id)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); rec.setValue("cam_dev_id", camSdkRec.str_cam_dev_id); rec.setValue("sdks", camSdkRec.str_sdks); rec.setValue("det_thr", camSdkRec.str_det_thr); rec.setValue("cmp_thr", camSdkRec.str_cmp_thr); rec.setValue("reserved", camSdkRec.str_reserved); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } //查询摄像机信息 Record_Cam_Sdk LDBTool::searchCamSdkTableByCamId(QString strCamId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO Record_Cam_Sdk lRec; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_sdk"); pModel.setFilter(QObject::tr("cam_dev_id = '%1'").arg(strCamId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); lRec.n_id = rec.value("id").toInt(); lRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); lRec.str_sdks = rec.value("sdks").toString(); lRec.str_det_thr = rec.value("det_thr").toString(); lRec.str_cmp_thr = rec.value("cmp_thr").toString(); lRec.str_reserved = rec.value("reserved").toString(); } return lRec; } //编辑通道 bool LDBTool::updateCamAndSdkTable(Record_Cam_Dev camRec, Record_Cam_Sdk camSdkRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel_cam(NULL, m_db); pModel_cam.setTable("cam_dev"); pModel_cam.setFilter(QObject::tr("cam_dev_id = '%1'")\ .arg(camRec.str_cam_dev_id)); pModel_cam.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_cam.select(); QSqlRecord rec = pModel_cam.record(0); // rec.setGenerated("id", false); rec.setValue("cam_dev_id", camRec.str_cam_dev_id); rec.setValue("name", camRec.str_name); rec.setValue("addr", camRec.str_addr); rec.setValue("longitude", camRec.str_longitude); rec.setValue("latitude", camRec.str_latitude); rec.setValue("ip", camRec.str_ip); rec.setValue("port", camRec.n_port); rec.setValue("username", camRec.str_username); rec.setValue("password", camRec.str_password); rec.setValue("brand", camRec.str_brand); rec.setValue("reserved", camRec.str_reserved); //camsdk QSqlTableModel pModel_sdk(NULL, m_db); pModel_sdk.setTable("cam_sdk"); pModel_sdk.setFilter(QObject::tr("cam_dev_id = '%1'")\ .arg(camRec.str_cam_dev_id)); pModel_sdk.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_sdk.select(); QSqlRecord rec_sdk = pModel_sdk.record(0); // rec_sdk.setGenerated("id", false); rec_sdk.setValue("cam_dev_id", camSdkRec.str_cam_dev_id); rec_sdk.setValue("sdks", camSdkRec.str_sdks); rec_sdk.setValue("det_thr", camSdkRec.str_det_thr); rec_sdk.setValue("cmp_thr", camSdkRec.str_cmp_thr); rec_sdk.setValue("reserved", camSdkRec.str_reserved); int rowCount = pModel_cam.rowCount(); if (rowCount == 0) { pModel_cam.insertRecord(-1, rec); } else if (rowCount > 0) { pModel_cam.setRecord(0, rec);//TODO } rowCount = pModel_sdk.rowCount(); if (rowCount == 0) { pModel_sdk.insertRecord(-1, rec_sdk); } else if (rowCount > 0) { pModel_sdk.setRecord(0, rec_sdk);//TODO } m_db.transaction();//开始事务操作 if (pModel_cam.submitAll() && pModel_sdk.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_chn or pModel_sdk Error: " \ << pModel_cam.lastError().text().toStdString() \ << pModel_sdk.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } /// /// \brief insertChnSdkTable /// \param chnSdkRec /// \return /// bool LDBTool::insertChnSdkTable(Record_Chn_Sdk chnSdkRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("chn_sdk"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec = pModel.record(); rec.setGenerated("id", false); rec.setValue("storage_dev_id", chnSdkRec.str_storage_dev_id); rec.setValue("chn", chnSdkRec.n_chn); rec.setValue("sdks", chnSdkRec.str_sdks); rec.setValue("det_thr", chnSdkRec.str_det_thr); rec.setValue("cmp_thr", chnSdkRec.str_cmp_thr); // rec.setValue("cam_dev_id", chnSdkRec.str_cam_dev_id); rec.setValue("reserved", chnSdkRec.str_reserved); pModel.insertRecord(-1, rec);//TODO m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("insertLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("insertLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::deleteChnSdkTable(QString strDeviceId, int nChannelId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("chn_sdk"); pModel.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2'")\ .arg(strDeviceId).arg(nChannelId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount >= 1) { for (int i = 0; i < rowCount; i++) { pModel.removeRow(i);//TODO } } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("deleteLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } bool LDBTool::updateChnSdkTable(Record_Chn_Sdk chnSdkRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("chn_sdk"); pModel.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2'")\ .arg(chnSdkRec.str_storage_dev_id).arg(chnSdkRec.n_chn)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); // rec.setGenerated("id", false); rec.setValue("storage_dev_id", chnSdkRec.str_storage_dev_id); rec.setValue("chn", chnSdkRec.n_chn); rec.setValue("sdks", chnSdkRec.str_sdks); rec.setValue("det_thr", chnSdkRec.str_det_thr); rec.setValue("cmp_thr", chnSdkRec.str_cmp_thr); // rec.setValue("cam_dev_id", chnSdkRec.str_cam_dev_id); rec.setValue("reserved", chnSdkRec.str_reserved); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } std::list LDBTool::searchChnSdkTableAll(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list lst; QSqlTableModel pModel(NULL, m_db); pModel.setTable("chn_sdk"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { for (int i = 0; i < rowCount; ++i) { Record_Chn_Sdk lRec; QSqlRecord rec = pModel.record(i); lRec.n_id = rec.value("id").toInt(); lRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lRec.n_chn = rec.value("chn").toInt(); lRec.str_sdks = rec.value("sdks").toString(); lRec.str_det_thr = rec.value("det_thr").toString(); lRec.str_cmp_thr = rec.value("cmp_thr").toString(); // lRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); lRec.str_reserved = rec.value("reserved").toString(); lst.push_back(lRec); } } return lst; } Record_Chn_Sdk LDBTool::searchChnSdkTableByChannelId(QString strDeviceId, int nChannelId) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO Record_Chn_Sdk lRec; QSqlTableModel pModel(NULL, m_db); pModel.setTable("chn_sdk"); pModel.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2'")\ .arg(strDeviceId).arg(nChannelId)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); lRec.n_id = rec.value("id").toInt(); lRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); lRec.n_chn = rec.value("chn").toInt(); lRec.str_sdks = rec.value("sdks").toString(); lRec.str_det_thr = rec.value("det_thr").toString(); lRec.str_cmp_thr = rec.value("cmp_thr").toString(); // lRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); lRec.str_reserved = rec.value("reserved").toString(); } return lRec; } ////查询摄像机信息 //Record_Chn_Sdk LDBTool::searchChnSdkTableByCam(QString strCamId) //{ // QMutexLocker mutexLocker(&m_mutexVisit);//TODO // Record_Chn_Sdk lRec; // QSqlTableModel pModel(NULL, m_db); // pModel.setTable("chn_sdk"); // pModel.setFilter(QObject::tr("cam_dev_id = '%1'").arg(strCamId)); // pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange // pModel.select(); // // int rowCount = pModel.rowCount(); // if (rowCount > 0) { // QSqlRecord rec = pModel.record(0); // lRec.n_id = rec.value("id").toInt(); // lRec.str_storage_dev_id = rec.value("storage_dev_id").toString(); // lRec.n_chn = rec.value("chn").toInt(); // lRec.str_sdks = rec.value("sdks").toString(); // lRec.str_det_thr = rec.value("det_thr").toString(); // lRec.str_cmp_thr = rec.value("cmp_thr").toString(); // lRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); // lRec.str_reserved = rec.value("reserved").toString(); // } // // return lRec; //} //编辑通道 bool LDBTool::updateDevChnAndSdk(Record_Cam_Chn channelRec, Record_Chn_Sdk chnSdkRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel_chn(NULL, m_db); pModel_chn.setTable("cam_chn"); pModel_chn.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2'")\ .arg(channelRec.str_storage_dev_id).arg(channelRec.n_chn)); pModel_chn.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_chn.select(); QSqlRecord rec = pModel_chn.record(0); // rec.setGenerated("id", false); rec.setValue("storage_dev_id", channelRec.str_storage_dev_id); rec.setValue("chn", channelRec.n_chn); rec.setValue("name", channelRec.str_name); rec.setValue("addr", channelRec.str_addr); rec.setValue("longitude", channelRec.str_longitude); rec.setValue("latitude", channelRec.str_latitude); rec.setValue("do_time", channelRec.tim_do_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("update_time", channelRec.tim_update_time.toString("yyyy-MM-dd hh:mm:ss")); rec.setValue("reserved", channelRec.str_reserved); //chnsdk QSqlTableModel pModel_sdk(NULL, m_db); pModel_sdk.setTable("chn_sdk"); pModel_sdk.setFilter(QObject::tr("storage_dev_id = '%1' and chn = '%2'")\ .arg(chnSdkRec.str_storage_dev_id).arg(chnSdkRec.n_chn)); pModel_sdk.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel_sdk.select(); QSqlRecord rec_sdk = pModel_sdk.record(0); // rec_sdk.setGenerated("id", false); rec_sdk.setValue("storage_dev_id", chnSdkRec.str_storage_dev_id); rec_sdk.setValue("chn", chnSdkRec.n_chn); rec_sdk.setValue("sdks", chnSdkRec.str_sdks); rec_sdk.setValue("det_thr", chnSdkRec.str_det_thr); rec_sdk.setValue("cmp_thr", chnSdkRec.str_cmp_thr); rec_sdk.setValue("reserved", chnSdkRec.str_reserved); int rowCount = pModel_chn.rowCount(); if (rowCount == 0) { pModel_chn.insertRecord(-1, rec); } else if (rowCount > 0) { pModel_chn.setRecord(0, rec);//TODO } rowCount = pModel_sdk.rowCount(); if (rowCount == 0) { pModel_sdk.insertRecord(-1, rec_sdk); } else if (rowCount > 0) { pModel_sdk.setRecord(0, rec_sdk);//TODO } m_db.transaction();//开始事务操作 if (pModel_chn.submitAll() && \ pModel_sdk.submitAll()) { m_db.commit();//提交 return true; } else { std::string warning_str = " No Fields to update"; std::string ok_str = " "; if ((pModel_chn.lastError().text().toStdString() == warning_str) || \ (pModel_chn.lastError().text().toStdString() == ok_str)) { if ((pModel_sdk.lastError().text().toStdString() == warning_str) || \ (pModel_sdk.lastError().text().toStdString() == ok_str)) { m_db.commit();//提交 return true; } } m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_chn or pModel_sdk Error: " \ << pModel_chn.lastError().text().toStdString() \ << pModel_sdk.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } ////编辑通道 //bool LDBTool::updateCamAndSdk(Record_Cam_Chn channelRec, Record_Chn_Sdk chnSdkRec) //{ // QMutexLocker mutexLocker(&m_mutexVisit);//TODO // QSqlTableModel pModel_chn(NULL, m_db); // pModel_chn.setTable("cam_chn"); // pModel_chn.setFilter(QObject::tr("cam_dev_id = '%1'")\ // .arg(channelRec.str_cam_dev_id)); // pModel_chn.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange // pModel_chn.select(); // // QSqlRecord rec = pModel_chn.record(0); //// rec.setGenerated("id", false); // rec.setValue("cam_dev_id", channelRec.str_cam_dev_id); // rec.setValue("name", channelRec.str_name); // rec.setValue("addr", channelRec.str_addr); // rec.setValue("longitude", channelRec.str_longitude); // rec.setValue("latitude", channelRec.str_latitude); // rec.setValue("ip", channelRec.str_ip); // rec.setValue("port", channelRec.n_port); // rec.setValue("username", channelRec.str_username); // rec.setValue("password", channelRec.str_password); // rec.setValue("brand", channelRec.str_brand); // rec.setValue("reserved", channelRec.str_reserved); // // //chnsdk // QSqlTableModel pModel_sdk(NULL, m_db); // pModel_sdk.setTable("chn_sdk"); // pModel_sdk.setFilter(QObject::tr("cam_dev_id = '%1'")\ // .arg(channelRec.str_cam_dev_id)); // pModel_sdk.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange // pModel_sdk.select(); // // QSqlRecord rec_sdk = pModel_sdk.record(0); //// rec_sdk.setGenerated("id", false); // rec_sdk.setValue("cam_dev_id", chnSdkRec.str_cam_dev_id); // rec_sdk.setValue("sdks", chnSdkRec.str_sdks); // rec_sdk.setValue("det_thr", chnSdkRec.str_det_thr); // rec_sdk.setValue("cmp_thr", chnSdkRec.str_cmp_thr); // rec_sdk.setValue("reserved", chnSdkRec.str_reserved); // // int rowCount = pModel_chn.rowCount(); // if (rowCount == 0) { // pModel_chn.insertRecord(-1, rec); // } else if (rowCount > 0) { // pModel_chn.setRecord(0, rec);//TODO // } // // rowCount = pModel_sdk.rowCount(); // if (rowCount == 0) { // pModel_sdk.insertRecord(-1, rec_sdk); // } else if (rowCount > 0) { // pModel_sdk.setRecord(0, rec_sdk);//TODO // } // // m_db.transaction();//开始事务操作 // // if (pModel_chn.submitAll() && pModel_sdk.submitAll()) { // m_db.commit();//提交 // return true; // } else { // m_db.rollback();//回滚 // ERR("updateLDeviceTable ,pModel_chn or pModel_sdk Error: " \ // << pModel_chn.lastError().text().toStdString() \ // << pModel_sdk.lastError().text().toStdString()); // // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); // return false; // } //} //config 修改ip 端口等配置信息 bool LDBTool::updateConfigTableByServerInfo(Record_Config configRec) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("config"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); rec.setValue("alarm_ip", configRec.str_alarm_ip); rec.setValue("alarm_port", configRec.n_alarm_port); rec.setValue("web_pic_ip", configRec.str_web_pic_ip); rec.setValue("web_pic_port", configRec.n_web_pic_port); rec.setValue("es_pic_ip", configRec.str_es_pic_ip); rec.setValue("es_pic_port", configRec.n_es_pic_port); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } //config device type bool LDBTool::updateConfigTableByDevType(int devType) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("config"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); rec.setValue("dev_type", devType); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); return false; } } //config device type int LDBTool::searchDevTypeFromConfigTable(void) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("config"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int devType = 0; int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); devType = rec.value("dev_type").toInt(); } return devType; } //config 修改裁剪视频时长 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"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); 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(); } int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); // QMessageBox::warning(NULL,QObject::tr("updateLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text())); return false; } } //config 查询ip 端口等配置信息 Record_Config LDBTool::searchConfigTableWithinServerInfo(void) { Record_Config lRec; 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); lRec.str_alarm_ip = rec.value("alarm_ip").toString(); lRec.n_alarm_port = rec.value("alarm_port").toInt(); lRec.str_web_pic_ip = rec.value("web_pic_ip").toString(); lRec.n_web_pic_port = rec.value("web_pic_port").toInt(); 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.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; } bool LDBTool::insertRecordVedioPath(QString pathKey, QString filePath) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("name_key_match"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange QSqlRecord rec = pModel.record(); rec.setGenerated("id", false); rec.setValue("key", pathKey); rec.setValue("filename", filePath); pModel.insertRecord(-1, rec);//TODO m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 DBG("srtPath=" << filePath.toStdString() << ", m_uuid=" << pathKey.toStdString()); return true; } else { m_db.rollback();//回滚 ERR("insertRecordVedioPath ,pModel_load Error: " << pModel.lastError().text().toStdString()); return false; } } QString LDBTool::searchRecordVedioPathByKey(QString pathKey) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("name_key_match"); pModel.setFilter(QObject::tr("key = '%1' ").arg(pathKey)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QString path; int rowCount = pModel.rowCount(); if (rowCount > 0) { QSqlRecord rec = pModel.record(0); path = rec.value("filename").toString(); } return path; } bool LDBTool::updateDevNameConfigTable(QString dev_name) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("config"); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); QSqlRecord rec = pModel.record(0); rec.setValue("dev_name", dev_name); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateDevNameConfigTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); return false; } } bool LDBTool::updateCameraWeekRule(const LActRuleWeekRecord &weekRule) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); 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 pModel.select(); QSqlRecord rec = pModel.record(0); //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) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } m_db.transaction();//开始事务操作 if (pModel.submitAll()) { m_db.commit();//提交 return true; } else { m_db.rollback();//回滚 ERR("updateCameraWeekRule ,pModel_load Error: " << pModel.lastError().text().toStdString()); return false; } } std::vector LDBTool::searchCameraWeekRuleByCamId(const QString &camId, const int &sdkType) { std::vector vecWeek; QMutexLocker mutexLocker(&m_mutexVisit);//TODO QSqlTableModel pModel(NULL, m_db); pModel.setTable("rule_week"); pModel.setFilter(QObject::tr("camera_id = '%1' and sdk_type='%2'").arg(camId).arg(sdkType)); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); for (int i = 0; i < rowCount; ++i) { 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_time").toString(); lActRuleWeekRec.m_strEnd = rec.value("end_time").toString(); lActRuleWeekRec.m_strCamId = rec.value("camera_id").toString(); vecWeek.push_back(lActRuleWeekRec); } return vecWeek; } 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); int rowCount = pModel.rowCount(); if (rowCount == 0) { pModel.insertRecord(-1, rec); } else if (rowCount > 0) { pModel.setRecord(0, rec);//TODO } 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 ruleMap; //std::vector 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; } /** * type 0 rtsp, 1 gb28181 */ std::list LDBTool::searchCamDevTableByType(int type) { QMutexLocker mutexLocker(&m_mutexVisit);//TODO std::list lst; QSqlTableModel pModel(NULL, m_db); pModel.setTable("cam_dev"); pModel.setFilter(QObject::tr( (string("cam_dev_id != '' and cam_dev_id is not null and type='") + to_string(type) + "'").c_str())); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { for (int i = 0; i < rowCount; ++i) { Record_Cam_Dev lChannelRec; QSqlRecord rec = pModel.record(i); lChannelRec.n_id = rec.value("id").toInt(); lChannelRec.str_cam_dev_id = rec.value("cam_dev_id").toString(); lChannelRec.str_name = rec.value("name").toString(); lChannelRec.str_addr = rec.value("addr").toString(); lChannelRec.str_longitude = rec.value("longitude").toString(); lChannelRec.str_latitude = rec.value("latitude").toString(); lChannelRec.str_ip = rec.value("ip").toString(); lChannelRec.n_port = rec.value("port").toInt(); lChannelRec.str_username = rec.value("username").toString(); lChannelRec.str_password = rec.value("password").toString(); lChannelRec.str_brand = rec.value("brand").toString(); lChannelRec.str_reserved = rec.value("reserved").toString(); lChannelRec.n_type = rec.value("type").toInt(); lst.push_back(lChannelRec); } } return lst; }