#include "FromWebAPI.h" #include "GlobalVariable.h" #include "commonDefine.h" #include #include 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& 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, "获取对比项信息失败: {}, {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); 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, "获取对比项通道信息失败: {}, {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); return false; } listItems.clear(); /*---------------------------------- 解析对比项信息 ------------------------------*/ 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(); if(code != 0) { SPDLOG_LOGGER_ERROR(m_logger, "获取对比项信息失败,错误码: {}, 错误信息: {}", code, jsonRet["message"].get()); return false; } nJson jsonResult = jsonRet["result"]; for(const auto& item : jsonResult) { CompareItemInfo_t compareItem; compareItem.nID = item["itemid"].get(); compareItem.strName = QString::fromStdString(item["itemname"].get()); compareItem.isEnable = item["itemenable"].get(); compareItem.paramMute.isEnable = item["silentenable"].get(); compareItem.paramMute.nLen = item["silentduration"].get(); compareItem.paramMute.threshold.nThreshold = item["silentthreshold"].get(); compareItem.paramMute.nSensitivity = item["silentsensitivity"].get(); compareItem.paramOverload.isEnable = item["overloadenable"].get(); compareItem.paramOverload.nLen = item["overloadduration"].get(); compareItem.paramOverload.threshold.nThreshold = item["overloadthreshold"].get(); compareItem.paramOverload.nSensitivity = item["overloadsensitivity"].get(); compareItem.paramPhase.isEnable = item["phaseenable"].get(); compareItem.paramPhase.nLen = item["phaseduration"].get(); compareItem.paramPhase.threshold.dThreshold = item["phasethreshold"].get(); compareItem.paramPhase.nSensitivity = item["phasesensitivity"].get(); 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(); if(code != 0) { SPDLOG_LOGGER_ERROR(m_logger, "获取对比项通道信息失败,错误码: {}, 错误信息: {}", code, jsonRet["message"].get()); return false; } nJson jsonResult = jsonRet["result"]; /* 使用迭代器获取对比项信息 */ auto it = listItems.begin(); for(const auto& item : jsonResult) { CompareItemRoadInfo_t roadInfo; int itemID = item["itemid"].get(); roadInfo.nCompareRoadNum = item["roadnum"].get(); roadInfo.strCompareRoadName = QString::fromStdString(item["roadname"].get()); roadInfo.isEnableRecord = item["roadrecordenable"].get(); roadInfo.scRoadInfo.nSoundCardNum = item["soundcardnum"].is_null() ? -1 : item["soundcardnum"].get(); roadInfo.scRoadInfo.strSoundCardID = item["soundcardid"].is_null() ? "" : QString::fromStdString(item["soundcardid"].get()); roadInfo.scRoadInfo.strSoundCardName = item["soundcardname"].is_null() ? "" : QString::fromStdString(item["soundcardname"].get()); roadInfo.scRoadInfo.roadInfo.nRoadNum = item["soundcardroadnum"].is_null() ? -1 : item["soundcardroadnum"].get(); roadInfo.scRoadInfo.roadInfo.nChannelID = item["channelid"].is_null() ? -1 : item["channelid"].get(); roadInfo.scRoadInfo.roadInfo.strChannelName = item["channelname"].is_null() ? "" : QString::fromStdString(item["channelname"].get()); /* 如果这个通道是当前迭代器的,就直接插入,如果不是则重新寻找 */ 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& 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& 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, "添加对比项通道信息失败: {}, {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); return false; } }nJsonCatch return true; } /* 修改对比项信息 */ bool FromWebAPI::updateCompareItemOnly(const QList& 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, "更新对比项信息失败: {}, {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); return false; } }nJsonCatch return true; } /* 只更新对比项通道信息,通过先删除所有的itemID的对比项,再插入所有的itemID的对比项来实现 */ bool FromWebAPI::updateCompareItemRoadOnly(const QList& listItems) { /*---------------------------------- 删除对比项通道信息 ------------------------------*/ QList 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& 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, "更新对比项通道信息失败: {}, {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); return false; } }nJsonCatch return true; } /* 删除对比项信息 */ bool FromWebAPI::deleteCompareItem(const QList 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, "删除对比项信息失败: {}, {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); return false; } }nJsonCatch /*---------------------------------- 删除对比项通道信息 ------------------------------*/ deleteCompareItemRoad(listIDs); return true; } /* 删除对比项通道信息 */ bool FromWebAPI::deleteCompareItemRoad(const QList& 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, "删除对比项通道信息失败: {}, {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); return false; } }nJsonCatch return true; } /* 只删除对比项通道信息,int是对比项ID */ bool FromWebAPI::deleteCompareItemRoad(QMap>& 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, "删除对比项通道信息失败: {}, {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); return false; } }nJsonCatch return true; } /* 获取系统配置信息 */ bool FromWebAPI::getSystemConfig(QMap& mapConfig) { try { nJson json0; json0["opName"] = "ACAS_GetSystemConfigInfo"; QString strSend = QString::fromStdString(json0.dump()); QString strRet; int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_Select, strSend, strRet); if(ret != 0) { SPDLOG_LOGGER_ERROR(m_logger, "获取系统配置信息失败, 错误码: {}, {}", ret, strRet.toStdString()); return false; } nJson jsonRet; /* 将json的key全部转换成小写 */ convertJsonKeyToLower(nJson::parse(strRet.toStdString()), jsonRet); int code = jsonRet["code"].get(); if(code != 0) { SPDLOG_LOGGER_ERROR(m_logger, "获取系统配置信息失败,错误码: {}, 错误信息: {}", code, jsonRet["message"].get()); return false; } nJson jsonResult = jsonRet["result"]; for(const auto& item : jsonResult) { std::string key = item["configkey"].get(); std::string value = item["configvalue"].get(); 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, "更新系统设置失败, 错误码:{}, {}", ret, strRet.toStdString()); return false; } }nJsonCatch return true; } /* 获取检测时段配置 */ bool FromWebAPI::getDetectPeriodConfig(QMap& mapDetectConfig) { try { nJson json0; json0["opName"] = "ACAS_GetDetectPeriod"; QString strSend = QString::fromStdString(json0.dump()); QString strRet; int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_Select, strSend, strRet); if(ret != 0) { SPDLOG_LOGGER_ERROR(m_logger, "获取对比项检测时段信息失败, 错误码: {}, {}", ret, strRet.toStdString()); return false; } nJson jsonRet; /* 将json的key全部转换成小写 */ convertJsonKeyToLower(nJson::parse(strRet.toStdString()), jsonRet); int code = jsonRet["code"].get(); if(code != 0) { SPDLOG_LOGGER_ERROR(m_logger, "获取对比项检测时段信息失败,错误码: {}, 错误信息: {}", code, jsonRet["message"].get()); return false; } nJson jsonResult = jsonRet["result"]; mapDetectConfig.clear(); for(const auto& it : jsonResult) { int id = it["itemid"].get(); /* 如果这个ID不存在,会默认创建一个 DetectPeriodConfig_t,以这个ID为键 */ DetectPeriodConfig_t& detectConfig = mapDetectConfig[id]; detectConfig.nID = id; bool isDetect = it["isdetect"].get(); if(isDetect) { /* 是检测时段 */ OnePlan_t plan; plan.weekType = static_cast(it["weektype"].get()); plan.timeStart = QTime::fromString(QString::fromStdString(it["timestart"].get()), "HH:mm:ss"); plan.timeEnd = QTime::fromString(QString::fromStdString(it["timeend"].get()), "HH:mm:ss"); detectConfig.listDetect.append(plan); }else { /* 不是检测时段 */ OnePlan_t plan; plan.date = it["cdate"].is_null() ? QDate() : QDate::fromString(QString::fromStdString(it["cdate"].get()), "yyyy-MM-dd"); plan.timeStart = QTime::fromString(QString::fromStdString(it["timestart"].get()), "HH:mm:ss"); plan.timeEnd = QTime::fromString(QString::fromStdString(it["timeend"].get()), "HH:mm:ss"); detectConfig.listNoDetect.append(plan); detectConfig.isApplySlient = it["applyslient"].get(); detectConfig.isApplyOverload = it["applyoverload"].get(); detectConfig.isApplyPhase = it["applyphase"].get(); detectConfig.isApplyNoise = it["applynoise"].get(); } } }nJsonCatch return true; } /* 插入检测时段配置 */ bool FromWebAPI::insertDetectPeriodConfig(const QMap& mapDetectConfig) { try { int Key = 1; nJson jsonArray = nJson::array(); for(auto it = mapDetectConfig.begin(); it != mapDetectConfig.end(); ++it) { int itemID = it.key(); /* 先添加检测计划 */ for(auto& plan : it.value().listDetect) { nJson json1; json1["opName"] = "ACAS_InsertDetectPeriod"; json1["Key"] = Key++; nJson jsonPlan; jsonPlan["itemID"] = itemID; jsonPlan["isDetect"] = true; jsonPlan["weekType"] = static_cast(plan.weekType); jsonPlan["cDate"] = ""; // 检测计划没有日期 jsonPlan["timeStart"] = plan.timeStart.toString("HH:mm:ss").toStdString(); jsonPlan["timeEnd"] = plan.timeEnd.toString("HH:mm:ss").toStdString(); /* 检测计划这些全设置为false */ jsonPlan["applySlient"] = false; jsonPlan["applyOverload"] = false; jsonPlan["applyPhase"] = false; jsonPlan["applyNoise"] = false; json1["paramList"] = jsonPlan; jsonArray.push_back(json1); } /* 再添加非检测计划 */ for(auto& plan : it.value().listNoDetect) { nJson json1; json1["opName"] = "ACAS_InsertDetectPeriod"; json1["Key"] = Key++; nJson jsonPlan; jsonPlan["itemID"] = itemID; jsonPlan["isDetect"] = false; jsonPlan["weekType"] = static_cast(eWeekType::Week_Special); jsonPlan["cDate"] = plan.date.isValid() ? plan.date.toString("yyyy-MM-dd").toStdString() : ""; jsonPlan["timeStart"] = plan.timeStart.toString("HH:mm:ss").toStdString(); jsonPlan["timeEnd"] = plan.timeEnd.toString("HH:mm:ss").toStdString(); /* 非检测计划这些按照实际设置来 */ jsonPlan["applySlient"] = it.value().isApplySlient; jsonPlan["applyOverload"] = it.value().isApplyOverload; jsonPlan["applyPhase"] = it.value().isApplyPhase; jsonPlan["applyNoise"] = it.value().isApplyNoise; json1["paramList"] = jsonPlan; 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, "写入 对比项检测计划 信息失败: {}, {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); return false; } }nJsonCatch return true; } /* 删除某些对比项的检测时段 */ bool FromWebAPI::deleteDetectPeriodConfig(const QList& listIDs) { try { int Key = 1; nJson jsonArray = nJson::array(); for(auto it : listIDs) { int itemID = it; nJson json1; json1["opName"] = "ACAS_DeleteDetectPeriod"; json1["Key"] = Key++; nJson josnItem; josnItem["itemID"] = itemID; json1["paramList"] = josnItem; 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, "删除对比项检测时段信息失败: {}, {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); return false; } }nJsonCatch return true; } /* 写入报警信息 */ bool FromWebAPI::insertAlarmInfo(const std::list& listAlarm) { try { int Key = 1; nJson jsonArray = nJson::array(); for(auto it : listAlarm) { nJson json1; json1["opName"] = "ACAS_InsertAlarmInfo"; json1["Key"] = Key++; nJson jsonAlarm; jsonAlarm["itemID"] = it.CompareItemID; jsonAlarm["itemName"] = it.strCompareItemName; jsonAlarm["alarmType"] = static_cast(it.AlarmType); jsonAlarm["soundCardNum"] = it.RoadInfo.nCompareRoadNum; jsonAlarm["soundCardName"] = it.RoadInfo.strCompareRoadName.toStdString(); jsonAlarm["soundCardRoadNum"] = it.RoadInfo.scRoadInfo.roadInfo.nRoadNum; jsonAlarm["compareRoadNum"] = it.RoadInfo.nCompareRoadNum; jsonAlarm["compareRoadName"] = it.RoadInfo.strCompareRoadName.toStdString(); jsonAlarm["compareRoadType"] = static_cast(it.RoadType); jsonAlarm["alarmStartTime"] = it.StartTime.toString("yyyy-MM-dd HH:mm:ss").toStdString(); jsonAlarm["alarmEndTime"] = it.EndTime.toString("yyyy-MM-dd HH:mm:ss").toStdString(); jsonAlarm["alarmDuration"] = it.StartTime.secsTo(it.EndTime); jsonAlarm["alarmFilePath"] = it.strAlarmFilePath; jsonAlarm["fileAlarmStartPos"] = it.AlarmStartPos; json1["paramList"] = jsonAlarm; 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, "删除对比项检测时段信息失败: {}, {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); return false; } }nJsonCatch return true; }