#ifndef VSSDEVTBL_MANAGER_H #define VSSDEVTBL_MANAGER_H #include "../model/VssDevTbl.h" #include "VssChannelTblDao.h" #include "BaseDao.h" #include "CamDevSqliteDao.h" #define VSSDevTbl_TABLE_NAME "VSSDevTbl" /** * 创建一级设备表管理类 */ class VssDevTblDao : public BaseDao { private: /** 创建一级设备表构造函数 */ VssDevTblDao() {} public: /** 创建一级设备表单例模式 */ static VssDevTblDao* instance() { static VssDevTblDao instance; return &instance; } /** 添加创建一级设备表 keyValuesToAdd 需要添加的列名和列值对map*/ mysqlpp::SimpleResult addVssDevTbl(std::map& keyValuesToAdd) { QMutexLocker mutexLocker(&m_mutexVisit); return add(keyValuesToAdd, VSSDevTbl_TABLE_NAME); } /** 删除创建一级设备表 whereKey 列名;whereValue 列值 */ bool deleteByColumn(string whereKey, string whereValue) { std::map whereKeyValues; whereKeyValues[whereKey] = whereValue; return deleteVssDevTbl(whereKeyValues); } /** 删除创建一级设备表 whereColumnNameValues 列名和列值对条件 */ bool deleteVssDevTbl(std::map& whereKeyValues) { QMutexLocker mutexLocker(&m_mutexVisit); vector> devRowDataList = findList(string("select * from ") + VSSDevTbl_TABLE_NAME + " where 1=1 " + getWhereColumnNameValuePair(whereKeyValues)); if (devRowDataList.size() > 0) { auto DevPubID = devRowDataList.at(0)[VssDevTbl_DevPubID]; vector> channelRowDataList = findList(string("select * from ") + VSSChannelTbl_TABLE_NAME + " where 1=1 AND DevPubID='"+DevPubID+"'"); for (auto channelRowData : channelRowDataList) { auto ChanPubID = channelRowData[VssChannelTbl_ChanPubID]; CamDevSqliteDao::instance()->deleteByColumn(CamDev_cam_dev_id, ChanPubID); } CamDevSqliteDao::instance()->deleteByColumn(CamDev_cam_dev_id, DevPubID); } return del(VSSDevTbl_TABLE_NAME, whereKeyValues); } /** 更新创建一级设备表 keyValuesToUpdate 需要更新的列名和列值对; whereKeyValues 列名和列值条件 */ bool updateVssDevTbl(std::map& keyValuesToUpdate, std::map& whereKeyValues) { QMutexLocker mutexLocker(&m_mutexVisit); return update(keyValuesToUpdate, VSSDevTbl_TABLE_NAME, whereKeyValues); } /** 更新创建二级设备表 keyValuesToUpdate 需要更新的列名和列值对; whereKeyValues 列名和列值条件 */ bool updateVssDevTbl(std::map& keyValuesToUpdate, string whereKey, string whereValue) { std::map whereKeyValues; whereKeyValues[whereKey] = whereValue; return update(keyValuesToUpdate, VSSDevTbl_TABLE_NAME, whereKeyValues); } /** 查询创建一级设备表列表 querySql 要查询的sql语句 */ vector findVssDevTblList(string querySql) { QMutexLocker mutexLocker(&m_mutexVisit); vector vssDevTblVec; vector> rowDatList = findList(querySql); vssDevTblVec.reserve(rowDatList.size()); for (auto rowData : rowDatList) { vssDevTblVec.emplace_back(mapToModel(rowData)); } return vssDevTblVec; } /**查询创建一级设备表列表 whereKeyValues 列名和列值对条件 */ vector findVssDevTblList(std::map& whereKeyValues) { return findVssDevTblList(string("select * from ") + VSSDevTbl_TABLE_NAME + " where 1=1 " + getWhereColumnNameValuePair(whereKeyValues)); } /**查询所有创建一级设备表列表 */ vector findAllVssDevTblList() { return findVssDevTblList(string("select * from ") + VSSDevTbl_TABLE_NAME + " where 1=1 "); } /** 查询map列表 querySql 要查询的sql语句 */ vector> findMapList(string querySql) { QMutexLocker mutexLocker(&m_mutexVisit); return findList(querySql); } /** 执行sql语句 */ bool execute(string sql) { QMutexLocker mutexLocker(&m_mutexVisit); return exec(move(sql)); } /** map转model类 */ VssDevTbl mapToModel(map& rowData) { VssDevTbl vssDevTbl; string IDValue = rowData[VssDevTbl_ID]; if (IDValue.length() != 0 && IDValue != "NULL") { vssDevTbl.ID = std::stoi(IDValue); } string DevPubIDValue = rowData[VssDevTbl_DevPubID]; if (DevPubIDValue.length() != 0 && DevPubIDValue != "NULL") { vssDevTbl.DevPubID = DevPubIDValue; } string DevNicknameValue = rowData[VssDevTbl_DevNickname]; if (DevNicknameValue.length() != 0 && DevNicknameValue != "NULL") { vssDevTbl.DevNickname = DevNicknameValue; } string UserNameValue = rowData[VssDevTbl_UserName]; if (UserNameValue.length() != 0 && UserNameValue != "NULL") { vssDevTbl.UserName = UserNameValue; } string PasswdValue = rowData[VssDevTbl_Passwd]; if (PasswdValue.length() != 0 && PasswdValue != "NULL") { vssDevTbl.Passwd = PasswdValue; } string CorpIDValue = rowData[VssDevTbl_CorpID]; if (CorpIDValue.length() != 0 && CorpIDValue != "NULL") { vssDevTbl.CorpID = CorpIDValue; } string IPValue = rowData[VssDevTbl_IP]; if (IPValue.length() != 0 && IPValue != "NULL") { vssDevTbl.IP = IPValue; } string PortValue = rowData[VssDevTbl_Port]; if (PortValue.length() != 0 && PortValue != "NULL") { vssDevTbl.Port = std::stoi(PortValue); } string AliveValue = rowData[VssDevTbl_Alive]; if (AliveValue.length() != 0 && AliveValue != "NULL") { vssDevTbl.Alive = std::stoi(AliveValue); } string DMarkerValue = rowData[VssDevTbl_DMarker]; if (DMarkerValue.length() != 0 && DMarkerValue != "NULL") { vssDevTbl.DMarker = std::stoi(DMarkerValue); } string UpdateTimeValue = rowData[VssDevTbl_UpdateTime]; if (UpdateTimeValue.length() != 0 && UpdateTimeValue != "NULL") { vssDevTbl.UpdateTime = UpdateTimeValue; } return vssDevTbl; } }; #endif //VSSDEVTBL_MANAGER_H