#ifndef VSSLOCALSETTINGTBL_Sqlite_MANAGER_H #define VSSLOCALSETTINGTBL_Sqlite_MANAGER_H #include "../model/VssLocalSettingTbl.h" #include "BaseSqliteDao.h" #define VSSLocalSettingTbl_Sqlite_TABLE_NAME "VSSLocalSettingTbl" #include /** * 本地国标配置管理类 */ class VssLocalSettingTblSqliteDao : public BaseSqliteDao { private: /** 本地国标配置构造函数 */ VssLocalSettingTblSqliteDao() {} public: /** 本地国标配置单例模式 */ static VssLocalSettingTblSqliteDao* instance() { static VssLocalSettingTblSqliteDao instance; return &instance; } /** 添加本地国标配置 keyValuesToAdd 需要添加的列名和列值对map*/ Json::Value addVssLocalSettingTbl(std::map& keyValuesToAdd) { Json::Value responseJsonValue; responseJsonValue["message"] = "添加失败!"; responseJsonValue["success"] = "false"; QMutexLocker mutexLocker(m_mutexVisit);//TODO QSqlTableModel pModel(NULL, *m_db); pModel.setTable(VSSLocalSettingTbl_Sqlite_TABLE_NAME); pModel.setEditStrategy(QSqlTableModel::OnManualSubmit); QSqlRecord rec = pModel.record(); for (auto keyValueToAdd : keyValuesToAdd) { rec.setValue(QString::fromUtf8(keyValueToAdd.first.c_str()), QString::fromUtf8(keyValueToAdd.second.c_str())); } rec.setGenerated("ID", false); pModel.insertRecord(-1, rec);//TODO m_db->transaction();//开始事务操作 if (pModel.submitAll()) { m_db->commit();//提交 responseJsonValue["success"] = "true"; responseJsonValue["message"] = "添加成功!"; } else { m_db->rollback();//回滚 ERR("addVssLocalSettingTbl err ,Database Error: " << pModel.lastError().text().toStdString()); } return responseJsonValue; } /** 删除本地国标配置 whereKey 列名;whereValue 列值 */ Json::Value deleteByColumn(string whereKey, string whereValue) { std::map whereKeyValues; whereKeyValues[whereKey] = whereValue; return deleteVssLocalSettingTbl(whereKeyValues); } /** 删除本地国标配置 whereColumnNameValues 列名和列值对条件 */ Json::Value deleteVssLocalSettingTbl(std::map& whereKeyValues) { Json::Value responseJsonValue; responseJsonValue["message"] = "删除失败!"; responseJsonValue["success"] = "false"; QMutexLocker mutexLocker(m_mutexVisit);//TODO QSqlTableModel pModel(NULL, *m_db); pModel.setTable(VSSLocalSettingTbl_Sqlite_TABLE_NAME); if (whereKeyValues.size() > 0) { auto filter = QObject::tr((string(" 1=1 ")+getWhereColumnNameValuePair(whereKeyValues)).c_str()); pModel.setFilter(filter); } 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 } } else { return responseJsonValue; } m_db->transaction();//开始事务操作 if (pModel.submitAll()) { m_db->commit();//提交 responseJsonValue["success"] = "true"; responseJsonValue["message"] = "删除成功!"; } else { m_db->rollback();//回滚 ERR("deleteLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); } return responseJsonValue; } /** 更新本地国标配置 keyValuesToUpdate 需要更新的列名和列值对; whereKeyValues 列名和列值条件 */ Json::Value updateVssLocalSettingTbl(std::map& keyValuesToUpdate, std::map& whereKeyValues) { Json::Value responseJsonValue; responseJsonValue["message"] = "更新失败!"; responseJsonValue["success"] = "false"; QMutexLocker mutexLocker(m_mutexVisit);//TODO QSqlTableModel pModel(NULL, *m_db); pModel.setTable(VSSLocalSettingTbl_Sqlite_TABLE_NAME); if (whereKeyValues.size() > 0) { auto filter = QObject::tr((string(" 1=1 ")+getWhereColumnNameValuePair(whereKeyValues)).c_str()); pModel.setFilter(filter); } 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) { QSqlRecord rec = pModel.record(0); for (auto keyValueToUpdate : keyValuesToUpdate) { rec.setValue(keyValueToUpdate.first.c_str(), keyValueToUpdate.second.c_str()); } // rec.setValue("dst_path", QString::fromStdString(dst_path)); // rec.setValue("total", total); // rec.setValue("finish_flag", 1); rec.setValue("UpdateTime", QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")); pModel.setRecord(0, rec); } else { return responseJsonValue; } m_db->transaction();//开始事务操作 if (pModel.submitAll()) { m_db->commit();//提交 responseJsonValue["success"] = "true"; responseJsonValue["message"] = "更新成功!"; } else { m_db->rollback();//回滚 ERR("updateLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString()); } return responseJsonValue; } /** 更新创建二级设备表 keyValuesToUpdate 需要更新的列名和列值对; whereKeyValues 列名和列值条件 */ Json::Value updateVssLocalSettingTbl(std::map& keyValuesToUpdate, string whereKey, string whereValue) { std::map whereKeyValues; whereKeyValues[whereKey] = whereValue; return updateVssLocalSettingTbl(keyValuesToUpdate, whereKeyValues); } /** 查询本地国标配置列表 querySql 要查询的sql语句 */ Json::Value findVssLocalSettingTblList(std::map& whereKeyValues) { Json::Value responseJsonValue; responseJsonValue["message"] = "查询失败!"; responseJsonValue["success"] = "false"; responseJsonValue["data"] = Json::arrayValue; QMutexLocker mutexLocker(m_mutexVisit);//TODO std::list lst; QSqlTableModel pModel(NULL, *m_db); pModel.setTable(VSSLocalSettingTbl_Sqlite_TABLE_NAME);; if (whereKeyValues.size() > 0) { auto filter = QObject::tr((string(" 1=1 ")+getWhereColumnNameValuePair(whereKeyValues)).c_str()); pModel.setFilter(filter); } pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange pModel.select(); int rowCount = pModel.rowCount(); if (rowCount > 0) { Json::Value rowDataList = Json::arrayValue; for (int i = 0; i < rowCount; ++i) { Json::Value rowData = Json::objectValue; Record_Cut_Video_info lRec; QSqlRecord rec = pModel.record(i); for (int i = 0; i < rec.count(); i++) { QSqlField field = rec.field(i); rowData[field.name().toStdString()] = field.value().toString().toStdString(); } rowDataList.append(rowData); } responseJsonValue["data"] = rowDataList; } responseJsonValue["message"] = "查询成功!"; responseJsonValue["success"] = "true"; return responseJsonValue; } /**查询所有本地国标配置列表 */ Json::Value findAllVssLocalSettingTblList() { std::map whereKeyValues; return findVssLocalSettingTblList(whereKeyValues); } }; #endif //VSSLOCALSETTINGTBL_Sqlite_MANAGER_H