| | |
| | | |
| | | #include "../model/CamDev.h" |
| | | #include "BaseSqliteDao.h" |
| | | #include <qsqlfield.h> |
| | | |
| | | #define CamDev_TABLE_NAME "CamDev" |
| | | #define CamDev_TABLE_NAME "cam_dev" |
| | | |
| | | /** |
| | | * 摄像头设备管理类 |
| | | */ |
| | | class CamDevSqliteDao : public BaseSqliteDao { |
| | | private: |
| | | /** 摄像头设备构造函数 */ |
| | | CamDevSqliteDao() {} |
| | | /** 摄像头设备构造函数 */ |
| | | CamDevSqliteDao() {} |
| | | public: |
| | | /** 摄像头设备单例模式 */ |
| | | /** 摄像头设备单例模式 */ |
| | | static CamDevSqliteDao* instance() { |
| | | static CamDevSqliteDao instance; |
| | | return &instance; |
| | | } |
| | | |
| | | |
| | | /** 添加摄像头设备 keyValuesToAdd 需要添加的列名和列值对map*/ |
| | | mysqlpp::SimpleResult addCamDev(std::map<std::string, std::string>& keyValuesToAdd) { |
| | | return add(keyValuesToAdd, CamDev_TABLE_NAME); |
| | | Json::Value addCamDev(std::map<std::string, std::string>& keyValuesToAdd) { |
| | | Json::Value responseJsonValue; |
| | | responseJsonValue["message"] = "添加失败!"; |
| | | responseJsonValue["success"] = "false"; |
| | | |
| | | std::map<std::string, std::string> whereKeyValues; |
| | | whereKeyValues["cam_dev_id"] = keyValuesToAdd["cam_dev_id"]; |
| | | if (this->findCamDevList(whereKeyValues)["data"].size() > 0) { |
| | | responseJsonValue["message"] = "cam_dev_id exist!"; |
| | | return responseJsonValue; |
| | | } |
| | | |
| | | QMutexLocker mutexLocker(m_mutexVisit);//TODO |
| | | QSqlTableModel pModel(NULL, *m_db); |
| | | |
| | | pModel.setTable(CamDev_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();//开始事务操作 |
| | | auto id1 = pModel.query().lastInsertId(); |
| | | if (pModel.submitAll()) { |
| | | m_db->commit();//提交 |
| | | responseJsonValue["id"] = pModel.query().lastInsertId().toString().toStdString(); |
| | | responseJsonValue["success"] = "true"; |
| | | responseJsonValue["message"] = "添加成功!"; |
| | | } else { |
| | | m_db->rollback();//回滚 |
| | | ERR("addCamDev err ,Database Error: " << pModel.lastError().text().toStdString()); |
| | | } |
| | | return responseJsonValue; |
| | | } |
| | | |
| | | /** 删除摄像头设备 whereKey 列名;whereValue 列值 */ |
| | | bool deleteByColumn(string whereKey, string whereValue) { |
| | | |
| | | /** 删除本地国标配置 whereKey 列名;whereValue 列值 */ |
| | | Json::Value deleteByColumn(string whereKey, string whereValue) { |
| | | |
| | | |
| | | std::map<std::string, std::string> whereKeyValues; |
| | | whereKeyValues[whereKey] = whereValue; |
| | | return deleteCamDev(whereKeyValues); |
| | | } |
| | | |
| | | /** 删除摄像头设备 whereColumnNameValues 列名和列值对条件 */ |
| | | bool deleteCamDev(std::map<std::string, std::string>& whereKeyValues) { |
| | | return del(CamDev_TABLE_NAME, whereKeyValues); |
| | | /** 删除摄像头设备 whereKey 列名;whereValue 列值 */ |
| | | Json::Value deleteCamDev(std::map<std::string, std::string>& whereKeyValues) { |
| | | |
| | | Json::Value responseJsonValue; |
| | | responseJsonValue["message"] = "删除失败!"; |
| | | responseJsonValue["success"] = "false"; |
| | | QMutexLocker mutexLocker(m_mutexVisit);//TODO |
| | | QSqlTableModel pModel(NULL, *m_db); |
| | | pModel.setTable(CamDev_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 updateCamDev(std::map<std::string, std::string>& keyValuesToUpdate, |
| | | std::map<std::string, std::string>& whereKeyValues) { |
| | | Json::Value responseJsonValue; |
| | | responseJsonValue["message"] = "更新失败!"; |
| | | responseJsonValue["success"] = "false"; |
| | | QMutexLocker mutexLocker(m_mutexVisit);//TODO |
| | | QSqlTableModel pModel(NULL, *m_db); |
| | | pModel.setTable(CamDev_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 列名和列值条件 */ |
| | | bool updateCamDev(std::map<std::string, std::string>& keyValuesToUpdate, |
| | | std::map<std::string, std::string>& whereKeyValues) { |
| | | return update(keyValuesToUpdate, CamDev_TABLE_NAME, whereKeyValues); |
| | | } |
| | | |
| | | /** 更新创建二级设备表 keyValuesToUpdate 需要更新的列名和列值对; whereKeyValues 列名和列值条件 */ |
| | | bool updateCamDev(std::map<std::string, std::string>& keyValuesToUpdate, |
| | | Json::Value updateCamDev(std::map<std::string, std::string>& keyValuesToUpdate, |
| | | string whereKey, |
| | | string whereValue) { |
| | | std::map<std::string, std::string> whereKeyValues; |
| | | whereKeyValues[whereKey] = whereValue; |
| | | return update(keyValuesToUpdate, CamDev_TABLE_NAME, whereKeyValues); |
| | | return updateCamDev(keyValuesToUpdate, whereKeyValues); |
| | | } |
| | | |
| | | /** 查询摄像头设备列表 querySql 要查询的sql语句 */ |
| | | vector<CamDev> findCamDevList(string querySql) { |
| | | vector<CamDev> camDevVec; |
| | | vector<map<string, string>> rowDatList = findList(querySql); |
| | | camDevVec.reserve(rowDatList.size()); |
| | | for (auto rowData : rowDatList) { |
| | | camDevVec.emplace_back(mapToModel(rowData)); |
| | | } |
| | | return camDevVec; |
| | | } |
| | | |
| | | |
| | | /**查询摄像头设备列表 whereKeyValues 列名和列值对条件 */ |
| | | vector<CamDev> findCamDevList(std::map<std::string, std::string>& whereKeyValues) { |
| | | return findCamDevList(string("select * from ") + CamDev_TABLE_NAME + " where 1=1 " + getWhereColumnNameValuePair(whereKeyValues)); |
| | | Json::Value findCamDevList(std::map<std::string, std::string>& whereKeyValues) { |
| | | |
| | | Json::Value responseJsonValue; |
| | | responseJsonValue["message"] = "查询失败!"; |
| | | responseJsonValue["success"] = "false"; |
| | | responseJsonValue["data"] = Json::arrayValue; |
| | | |
| | | QMutexLocker mutexLocker(m_mutexVisit);//TODO |
| | | std::list<Record_Cut_Video_info> lst; |
| | | QSqlTableModel pModel(NULL, *m_db); |
| | | pModel.setTable(CamDev_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; |
| | | } |
| | | |
| | | /**查询所有摄像头设备列表 */ |
| | | vector<CamDev> findAllCamDevList() { |
| | | return findCamDevList(string("select * from ") + CamDev_TABLE_NAME + " where 1=1 "); |
| | | |
| | | /**查询所有本地国标配置列表 */ |
| | | Json::Value findAllCamDevList() { |
| | | std::map<std::string, std::string> whereKeyValues; |
| | | return findCamDevList(whereKeyValues); |
| | | } |
| | | |
| | | /** 查询map列表 querySql 要查询的sql语句 */ |
| | | vector<map<string, string>> findMapList(string querySql) { |
| | | return findList(querySql); |
| | | } |
| | | |
| | | /** 执行sql语句 */ |
| | | bool execute(string sql) { |
| | | return exec(move(sql)); |
| | | } |
| | | |
| | | /** map转model类 */ |
| | | CamDev mapToModel(map<string, string>& rowData) { |
| | | CamDev camDev; |
| | | string idValue = rowData[CamDev_id]; |
| | | if (idValue.length() != 0 && idValue != "NULL") { |
| | | camDev.id = std::stoi(idValue); |
| | | } |
| | | string cam_dev_idValue = rowData[CamDev_cam_dev_id]; |
| | | if (cam_dev_idValue.length() != 0 && cam_dev_idValue != "NULL") { |
| | | camDev.cam_dev_id = cam_dev_idValue; |
| | | } |
| | | string nameValue = rowData[CamDev_name]; |
| | | if (nameValue.length() != 0 && nameValue != "NULL") { |
| | | camDev.name = nameValue; |
| | | } |
| | | string addrValue = rowData[CamDev_addr]; |
| | | if (addrValue.length() != 0 && addrValue != "NULL") { |
| | | camDev.addr = addrValue; |
| | | } |
| | | string longitudeValue = rowData[CamDev_longitude]; |
| | | if (longitudeValue.length() != 0 && longitudeValue != "NULL") { |
| | | camDev.longitude = longitudeValue; |
| | | } |
| | | string latitudeValue = rowData[CamDev_latitude]; |
| | | if (latitudeValue.length() != 0 && latitudeValue != "NULL") { |
| | | camDev.latitude = latitudeValue; |
| | | } |
| | | string ipValue = rowData[CamDev_ip]; |
| | | if (ipValue.length() != 0 && ipValue != "NULL") { |
| | | camDev.ip = ipValue; |
| | | } |
| | | string portValue = rowData[CamDev_port]; |
| | | if (portValue.length() != 0 && portValue != "NULL") { |
| | | camDev.port = std::stoi(portValue); |
| | | } |
| | | string usernameValue = rowData[CamDev_username]; |
| | | if (usernameValue.length() != 0 && usernameValue != "NULL") { |
| | | camDev.username = usernameValue; |
| | | } |
| | | string passwordValue = rowData[CamDev_password]; |
| | | if (passwordValue.length() != 0 && passwordValue != "NULL") { |
| | | camDev.password = passwordValue; |
| | | } |
| | | string brandValue = rowData[CamDev_brand]; |
| | | if (brandValue.length() != 0 && brandValue != "NULL") { |
| | | camDev.brand = brandValue; |
| | | } |
| | | string reservedValue = rowData[CamDev_reserved]; |
| | | if (reservedValue.length() != 0 && reservedValue != "NULL") { |
| | | camDev.reserved = reservedValue; |
| | | } |
| | | string typeValue = rowData[CamDev_type]; |
| | | if (typeValue.length() != 0 && typeValue != "NULL") { |
| | | camDev.type = typeValue; |
| | | } |
| | | return camDev; |
| | | } |
| | | |
| | | |
| | | }; |
| | | |
| | | |
| | | #endif //CAMDEV_MANAGER_H |
| | | |
| | | |