123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551 |
- #include "FromWebAPI.h"
- #include "GlobalVariable.h"
- #include "commonDefine.h"
- #include <QString>
- #include <qchar.h>
- FromWebAPI::FromWebAPI()
- {
- m_logger = spdlog::get("FromWebAPI");
- if(m_logger == nullptr)
- {
- fmt::print("FromWebAPI: Logger FromWebAPI not found\n");
- return;
- }
- }
- FromWebAPI::~FromWebAPI()
- {
- }
- /* 获取数据库中的对比项信息 */
- bool FromWebAPI::getCompareItemInfo(QList<CompareItemInfo_t>& listItems)
- {
- /* 先获取对比项信息 */
- nJson json0;
- json0["opName"] = "ACAS_GetCompareItem";
- QString strCmd1 = QString::fromStdString(json0.dump());
- QString strRet1;
- int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_Select, strCmd1, strRet1);
- if(ret != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "获取对比项信息失败: {}", nJson::parse(strRet1.toStdString()).dump(4));
- return false;
- }
- // SPDLOG_LOGGER_DEBUG(m_logger, "获取对比项信息成功: {}", nJson::parse(strRet1.toStdString()).dump(4));
- /* 再获取对比项的通道信息 */
- nJson json1;
- json1["opName"] = "ACAS_GetCompareItemRoad";
- QString strCmd2 = QString::fromStdString(json1.dump());
- QString strRet2;
- ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_Select, strCmd2, strRet2);
- if(ret != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "获取对比项通道信息失败: {}", nJson::parse(strRet2.toStdString()).dump(4));
- return false;
- }
-
- /*---------------------------------- 解析对比项信息 ------------------------------*/
- try
- {
- nJson jsonRet;
- /* 将json的key全部转换成小写 */
- if(!convertJsonKeyToLower(nJson::parse(strRet1.toStdString()), jsonRet))
- {
- SPDLOG_LOGGER_ERROR(m_logger, "转换JSON键名为小写失败");
- return false;
- }
- int code = jsonRet["code"].get<int>();
- if(code != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "获取对比项信息失败,错误码: {}, 错误信息: {}", code, jsonRet["message"].get<std::string>());
- return false;
- }
- nJson jsonResult = jsonRet["result"];
-
- for(const auto& item : jsonResult)
- {
- CompareItemInfo_t compareItem;
- compareItem.nID = item["itemid"].get<int>();
- compareItem.strName = QString::fromStdString(item["itemname"].get<std::string>());
- compareItem.isEnable = item["itemenable"].get<bool>();
- compareItem.paramMute.isEnable = item["silentenable"].get<bool>();
- compareItem.paramMute.nLen = item["silentduration"].get<int>();
- compareItem.paramMute.threshold.nThreshold = item["silentthreshold"].get<uint64_t>();
- compareItem.paramMute.nSensitivity = item["silentsensitivity"].get<int>();
- compareItem.paramOverload.isEnable = item["overloadenable"].get<bool>();
- compareItem.paramOverload.nLen = item["overloadduration"].get<int>();
- compareItem.paramOverload.threshold.nThreshold = item["overloadthreshold"].get<uint64_t>();
- compareItem.paramOverload.nSensitivity = item["overloadsensitivity"].get<int>();
- compareItem.paramPhase.isEnable = item["phaseenable"].get<bool>();
- compareItem.paramPhase.nLen = item["phaseduration"].get<int>();
- compareItem.paramPhase.threshold.dThreshold = item["phasethreshold"].get<double>();
- compareItem.paramPhase.nSensitivity = item["phasesensitivity"].get<int>();
- listItems.append(compareItem);
- }
- }nJsonCatch
- /*---------------------------------- 解析对比项录音通道信息 ------------------------------*/
- try
- {
- /* 将json的key全部转换成小写 */
- nJson jsonRet;
- if(!convertJsonKeyToLower(nJson::parse(strRet2.toStdString()), jsonRet))
- {
- SPDLOG_LOGGER_ERROR(m_logger, "转换JSON键名为小写失败");
- return false;
- }
- // SPDLOG_LOGGER_DEBUG(m_logger, "获取对比项通道信息: {}", jsonRet.dump(4));
- int code = jsonRet["code"].get<int>();
- if(code != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "获取对比项通道信息失败,错误码: {}, 错误信息: {}", code, jsonRet["message"].get<std::string>());
- return false;
- }
- nJson jsonResult = jsonRet["result"];
- /* 使用迭代器获取对比项信息 */
- auto it = listItems.begin();
- for(const auto& item : jsonResult)
- {
- CompareItemRoadInfo_t roadInfo;
- int itemID = item["itemid"].get<int>();
- roadInfo.nCompareRoadNum = item["roadnum"].get<int>();
- roadInfo.strCompareRoadName = QString::fromStdString(item["roadname"].get<std::string>());
- roadInfo.isEnableRecord = item["roadrecordenable"].get<bool>();
- roadInfo.scRoadInfo.nSoundCardNum = item["soundcardnum"].is_null() ? -1 : item["soundcardnum"].get<int>();
- roadInfo.scRoadInfo.strSoundCardID = item["soundcardid"].is_null() ? "" : QString::fromStdString(item["soundcardid"].get<std::string>());
- roadInfo.scRoadInfo.strSoundCardName = item["soundcardname"].is_null() ? "" : QString::fromStdString(item["soundcardname"].get<std::string>());
- roadInfo.scRoadInfo.roadInfo.nRoadNum = item["soundcardroadnum"].is_null() ? -1 : item["soundcardroadnum"].get<int>();
- roadInfo.scRoadInfo.roadInfo.nChannelID = item["channelid"].is_null() ? -1 : item["channelid"].get<int>();
- roadInfo.scRoadInfo.roadInfo.strChannelName = item["channelname"].is_null() ? "" : QString::fromStdString(item["channelname"].get<std::string>());
- /* 如果这个通道是当前迭代器的,就直接插入,如果不是则重新寻找 */
- if(it->nID == itemID)
- {
- it->mapRoad.insert(roadInfo.nCompareRoadNum, roadInfo);
- }else {
- for(it = listItems.begin(); it != listItems.end(); ++it)
- {
- if(it->nID == itemID)
- {
- it->mapRoad.insert(roadInfo.nCompareRoadNum, roadInfo);
- break;
- }
- }
- }
- }
- }nJsonCatch
- return true;
- }
- /* 添加对比项信息 */
- bool FromWebAPI::insertCompareItem(const QList<CompareItemInfo_t>& listItems)
- {
- /*---------------------------------- 插入对比项信息 ------------------------------*/
- try
- {
- int key = 1;
- nJson jsonArray = nJson::array();
- for(const auto& item : listItems)
- {
- nJson json0;
- json0["opName"] = "ACAS_InsertCompareItem";
- json0["Key"] = key++;
- nJson jsonItem;
- jsonItem["itemID"] = item.nID;
- jsonItem["itemName"] = item.strName.toStdString();
- jsonItem["itemEnable"] = item.isEnable;
- jsonItem["roadCount"] = item.mapRoad.size();
- jsonItem["silentEnable"] = item.paramMute.isEnable;
- jsonItem["silentDuration"] = item.paramMute.nLen;
- jsonItem["silentThreshold"] = item.paramMute.threshold.nThreshold;
- jsonItem["silentSensitivity"] = item.paramMute.nSensitivity;
- jsonItem["overloadEnable"] = item.paramOverload.isEnable;
- jsonItem["overloadDuration"] = item.paramOverload.nLen;
- jsonItem["overloadThreshold"] = item.paramOverload.threshold.nThreshold;
- jsonItem["overloadSensitivity"] = item.paramOverload.nSensitivity;
- jsonItem["phaseEnable"] = item.paramPhase.isEnable;
- jsonItem["phaseDuration"] = item.paramPhase.nLen;
- jsonItem["phaseThreshold"] = item.paramPhase.threshold.dThreshold;
- jsonItem["phaseSensitivity"] = item.paramPhase.nSensitivity;
- json0["paramList"] = jsonItem;
- jsonArray.push_back(json0);
- }
- QString strSend = QString::fromStdString(jsonArray.dump());
- QString strRet;
- int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_BatchTransAction, strSend, strRet);
- if(ret != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "添加对比项信息失败: {}, {}", ret, strRet.toStdString());
- return false;
- }
- }nJsonCatch
- /*---------------------------------- 插入对比项通道信息 ------------------------------*/
- if(!insertCompareItemRoad(listItems))
- {
- return false;
- }
- return true;
- }
- /* 插入对比项通道信息 */
- bool FromWebAPI::insertCompareItemRoad(const QList<CompareItemInfo_t>& listItems)
- {
- try
- {
- int Key = 1;
- nJson jsonArray = nJson::array();
- for(const auto& item : listItems)
- {
- for(const auto& road : item.mapRoad)
- {
- nJson json1;
- json1["opName"] = "ACAS_InsertCompareItemRoad";
- json1["Key"] = Key++;
- nJson jsonRoad;
- jsonRoad["itemID"] = item.nID;
- jsonRoad["roadNum"] = road.nCompareRoadNum;
- jsonRoad["roadName"] = road.strCompareRoadName.toStdString();
- jsonRoad["roadRecordEnable"] = road.isEnableRecord;
- jsonRoad["soundCardNum"] = road.scRoadInfo.nSoundCardNum;
- jsonRoad["soundCardID"] = road.scRoadInfo.strSoundCardID.toStdString();
- jsonRoad["soundCardName"] = road.scRoadInfo.strSoundCardName.toStdString();
- jsonRoad["soundCardRoadNum"] = road.scRoadInfo.roadInfo.nRoadNum;
- jsonRoad["channelID"] = road.scRoadInfo.roadInfo.nChannelID;
- jsonRoad["channelName"] = road.scRoadInfo.roadInfo.strChannelName.toStdString();
- json1["paramList"] = jsonRoad;
- jsonArray.push_back(json1);
- }
- }
- QString strSend = QString::fromStdString(jsonArray.dump());
- QString strRet;
- int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_BatchTransAction, strSend, strRet);
- if(ret != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "添加对比项通道信息失败: {}", strRet.toStdString());
- return false;
- }
- }nJsonCatch
- return true;
- }
- /* 修改对比项信息 */
- bool FromWebAPI::updateCompareItemOnly(const QList<CompareItemInfo_t>& listItems)
- {
- /*---------------------------------- 更新对比项信息 ------------------------------*/
- try
- {
- int key = 1;
- nJson jsonArray = nJson::array();
- for(const auto& item : listItems)
- {
- nJson json0;
- json0["opName"] = "ACAS_UpdateCompareItem";
- json0["Key"] = key++;
- nJson jsonItem;
- jsonItem["itemID"] = item.nID;
- jsonItem["itemName"] = item.strName.toStdString();
- jsonItem["itemEnable"] = item.isEnable;
- jsonItem["roadCount"] = item.mapRoad.size();
- jsonItem["silentEnable"] = item.paramMute.isEnable;
- jsonItem["silentDuration"] = item.paramMute.nLen;
- jsonItem["silentThreshold"] = item.paramMute.threshold.nThreshold;
- jsonItem["silentSensitivity"] = item.paramMute.nSensitivity;
- jsonItem["overloadEnable"] = item.paramOverload.isEnable;
- jsonItem["overloadDuration"] = item.paramOverload.nLen;
- jsonItem["overloadThreshold"] = item.paramOverload.threshold.nThreshold;
- jsonItem["overloadSensitivity"] = item.paramOverload.nSensitivity;
- jsonItem["phaseEnable"] = item.paramPhase.isEnable;
- jsonItem["phaseDuration"] = item.paramPhase.nLen;
- jsonItem["phaseThreshold"] = item.paramPhase.threshold.dThreshold;
- jsonItem["phaseSensitivity"] = item.paramPhase.nSensitivity;
- json0["paramList"] = jsonItem;
- jsonArray.push_back(json0);
- }
- QString strSend = QString::fromStdString(jsonArray.dump());
- QString strRet;
- int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_BatchTransAction, strSend, strRet);
- if(ret != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "更新对比项信息失败: {}", nJson::parse(strRet.toStdString()).dump(4));
- return false;
- }
- }nJsonCatch
-
- return true;
- }
- /* 只更新对比项通道信息,通过先删除所有的itemID的对比项,再插入所有的itemID的对比项来实现 */
- bool FromWebAPI::updateCompareItemRoadOnly(const QList<CompareItemInfo_t>& listItems)
- {
- /*---------------------------------- 删除对比项通道信息 ------------------------------*/
- QList<int> listItemIDs;
- for(const auto& item : listItems)
- {
- listItemIDs.append(item.nID);
- }
- if(!deleteCompareItemRoad(listItemIDs))
- {
- return false;
- }
- /*---------------------------------- 插入对比项通道信息 ------------------------------*/
- if(!insertCompareItemRoad(listItems))
- {
- return false;
- }
- return true;
- }
- /* 更新一条对比项通道信息 */
- bool FromWebAPI::updateCompareItemOneRoadOnly(const QList<CompareItemInfo_t>& listItems)
- {
- /*---------------------------------- 更新对比项通道信息 ------------------------------*/
- try
- {
- int Key = 1;
- nJson jsonArray = nJson::array();
- for(const auto& item : listItems)
- {
- for(const auto& road : item.mapRoad)
- {
- nJson json1;
- json1["opName"] = "ACAS_UpdateCompareItemOneRoad";
- json1["Key"] = Key++;
- nJson jsonRoad;
- jsonRoad["itemID"] = item.nID;
- jsonRoad["roadNum"] = road.nCompareRoadNum;
- jsonRoad["roadName"] = road.strCompareRoadName.toStdString();
- jsonRoad["roadRecordEnable"] = road.isEnableRecord;
- jsonRoad["soundCardNum"] = road.scRoadInfo.nSoundCardNum;
- jsonRoad["soundCardID"] = road.scRoadInfo.strSoundCardID.toStdString();
- jsonRoad["soundCardName"] = road.scRoadInfo.strSoundCardName.toStdString();
- jsonRoad["soundCardRoadNum"] = road.scRoadInfo.roadInfo.nRoadNum;
- jsonRoad["channelID"] = road.scRoadInfo.roadInfo.nChannelID;
- jsonRoad["channelName"] = road.scRoadInfo.roadInfo.strChannelName.toStdString();
- json1["paramList"] = jsonRoad;
- jsonArray.push_back(json1);
- }
- }
- QString strSend = QString::fromStdString(jsonArray.dump());
- QString strRet;
- int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_BatchTransAction, strSend, strRet);
- if(ret != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "更新对比项通道信息失败: {}", nJson::parse(strRet.toStdString()).dump(4));
- return false;
- }
- }nJsonCatch
- return true;
- }
- /* 删除对比项信息 */
- bool FromWebAPI::deleteCompareItem(const QList<int> listIDs)
- {
- /*---------------------------------- 删除对比项信息 ------------------------------*/
- try
- {
- int Key = 1;
- nJson jsonArray = nJson::array();
- for(int id : listIDs)
- {
- nJson json0;
- json0["opName"] = "ACAS_DeleteCompareItem";
- json0["Key"] = Key++;
- nJson jsonItem;
- jsonItem["itemID"] = id;
- json0["paramList"] = jsonItem;
- jsonArray.push_back(json0);
- }
- QString strSend = QString::fromStdString(jsonArray.dump());
- QString strRet;
- int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_BatchTransAction, strSend, strRet);
- if(ret != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "删除对比项信息失败: {}", nJson::parse(strRet.toStdString()).dump(4));
- return false;
- }
- }nJsonCatch
- /*---------------------------------- 删除对比项通道信息 ------------------------------*/
- deleteCompareItemRoad(listIDs);
- return true;
- }
- /* 删除对比项通道信息 */
- bool FromWebAPI::deleteCompareItemRoad(const QList<int>& listIDs)
- {
- /* 在创建表格的时候,设置了ItemID的关联关系,在上面删除对比项ID的时候,这个表格里的项目应该也会自动删除 */
- try
- {
- int Key = 1;
- nJson jsonArray = nJson::array();
- for(int id : listIDs)
- {
- nJson json1;
- json1["opName"] = "ACAS_DeleteCompareItemAllRoad";
- json1["Key"] = Key++;
- nJson jsonRoad;
- jsonRoad["itemID"] = id;
- json1["paramList"] = jsonRoad;
- jsonArray.push_back(json1);
- }
- QString strSend = QString::fromStdString(jsonArray.dump());
- QString strRet;
- int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_BatchTransAction, strSend, strRet);
- if(ret != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "删除对比项通道信息失败: {}", nJson::parse(strRet.toStdString()).dump(4));
- return false;
- }
- }nJsonCatch
- return true;
- }
- /* 只删除对比项通道信息,int是对比项ID */
- bool FromWebAPI::deleteCompareItemRoad(QMap<int, QList<int>>& mapItemRoads)
- {
- /*---------------------------------- 删除对比项通道信息 ------------------------------*/
- try
- {
- int Key = 1;
- nJson jsonArray = nJson::array();
- for(auto it = mapItemRoads.begin(); it != mapItemRoads.end(); ++it)
- {
- int itemID = it.key();
- for(int roadNum : it.value())
- {
- nJson json1;
- json1["opName"] = "ACAS_DeleteCompareItemOneRoad";
- json1["Key"] = Key++;
- nJson jsonRoad;
- jsonRoad["itemID"] = itemID;
- jsonRoad["roadNum"] = roadNum;
- json1["paramList"] = jsonRoad;
- jsonArray.push_back(json1);
- }
- }
- QString strSend = QString::fromStdString(jsonArray.dump());
- QString strRet;
- int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_BatchTransAction, strSend, strRet);
- if(ret != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "删除对比项通道信息失败: {}", nJson::parse(strRet.toStdString()).dump(4));
- return false;
- }
- }nJsonCatch
- return true;
- }
- /* 获取系统配置信息 */
- bool FromWebAPI::getSystemConfig(QMap<std::string, std::string>& mapConfig)
- {
- try
- {
- nJson json0;
- json0["opName"] = "ACAS_GetSystemConfigInfo";
- QString strSend = QString::fromStdString(json0.dump());
- QString strRet;
- int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_BatchTransAction, strSend, strRet);
- if(ret != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "获取系统配置信息失败: {}", nJson::parse(strRet.toStdString()).dump(4));
- return false;
- }
- nJson jsonRet;
- /* 将json的key全部转换成小写 */
- convertJsonKeyToLower(nJson::parse(strRet.toStdString()), jsonRet);
- int code = jsonRet["code"].get<int>();
- if(code != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "获取系统配置信息失败,错误码: {}, 错误信息: {}", code, jsonRet["message"].get<std::string>());
- return false;
- }
- nJson jsonResult = jsonRet["result"];
- for(const auto& item : jsonResult)
- {
- std::string key = item["configkey"].get<std::string>();
- std::string value = item["configvalue"].get<std::string>();
- mapConfig.insert(key, value);
- }
- }nJsonCatch
- return true;
- }
- /* 更新系统配置信息 */
- bool FromWebAPI::updateSystemConfig(const std::string& key, const std::string& value, const std::string& desc)
- {
- try
- {
- nJson json0;
- json0["opName"] = "ACAS_UpdateSystemConfigInfo";
-
- nJson jsonData;
- jsonData["configKey"] = key;
- jsonData["configValue"] = value;
- jsonData["configDesc"] = desc;
- json0["paramList"] = jsonData;
-
- QString strSend = QString::fromStdString(json0.dump());
- QString strRet;
- int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_Update, strSend, strRet);
- if(ret != 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "更新系统设置失败: {}", nJson::parse(strRet.toStdString()).dump(4));
- return false;
- }
- }nJsonCatch
- return true;
- }
|