FromWebAPI.cpp 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. #include "FromWebAPI.h"
  2. #include "GlobalVariable.h"
  3. #include "commonDefine.h"
  4. #include <QString>
  5. #include <qchar.h>
  6. FromWebAPI::FromWebAPI()
  7. {
  8. m_logger = spdlog::get("FromWebAPI");
  9. if(m_logger == nullptr)
  10. {
  11. fmt::print("FromWebAPI: Logger FromWebAPI not found\n");
  12. return;
  13. }
  14. }
  15. FromWebAPI::~FromWebAPI()
  16. {
  17. }
  18. /* 获取数据库中的对比项信息 */
  19. bool FromWebAPI::getCompareItemInfo(QList<CompareItemInfo_t>& listItems)
  20. {
  21. /* 先获取对比项信息 */
  22. nJson json0;
  23. json0["opName"] = "ACAS_GetCompareItem";
  24. QString strCmd1 = QString::fromStdString(json0.dump());
  25. QString strRet1;
  26. int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_Select, strCmd1, strRet1);
  27. if(ret != 0)
  28. {
  29. SPDLOG_LOGGER_ERROR(m_logger, "获取对比项信息失败,错误码: {}, 错误信息: {}", ret, m_httpApi->DoGetLastError(&ret).toStdString());
  30. return false;
  31. }
  32. /* 再获取对比项的通道信息 */
  33. nJson json1;
  34. json1["opName"] = "ACAS_GetCompareItemRoad";
  35. QString strCmd2 = QString::fromStdString(json1.dump());
  36. QString strRet2;
  37. ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_Select, strCmd2, strRet2);
  38. if(ret != 0)
  39. {
  40. SPDLOG_LOGGER_ERROR(m_logger, "获取对比项通道信息失败,错误码: {}, 错误信息: {}", ret, m_httpApi->DoGetLastError(&ret).toStdString());
  41. return false;
  42. }
  43. /*---------------------------------- 解析对比项信息 ------------------------------*/
  44. try
  45. {
  46. nJson jsonRet;
  47. /* 将json的key全部转换成小写 */
  48. if(!convertJsonKeyToLower(nJson::parse(strRet1.toStdString()), jsonRet))
  49. {
  50. SPDLOG_LOGGER_ERROR(m_logger, "转换JSON键名为小写失败");
  51. return false;
  52. }
  53. int code = jsonRet["code"].get<int>();
  54. if(code != 0)
  55. {
  56. SPDLOG_LOGGER_ERROR(m_logger, "获取对比项信息失败,错误码: {}, 错误信息: {}", code, jsonRet["message"].get<std::string>());
  57. return false;
  58. }
  59. nJson jsonResult = jsonRet["result"];
  60. for(const auto& item : jsonResult)
  61. {
  62. CompareItemInfo_t compareItem;
  63. compareItem.nID = item["itemid"].get<int>();
  64. compareItem.strName = QString::fromStdString(item["itemname"].get<std::string>());
  65. compareItem.isEnable = item["itemenable"].get<bool>();
  66. compareItem.paramMute.isEnable = item["silentenable"].get<bool>();
  67. compareItem.paramMute.nLen = item["silentduration"].get<int>();
  68. compareItem.paramMute.threshold.nThreshold = item["silentthreshold"].get<uint64_t>();
  69. compareItem.paramMute.nSensibility = item["silentsensibility"].get<int>();
  70. compareItem.paramOverload.isEnable = item["overloadenable"].get<bool>();
  71. compareItem.paramOverload.nLen = item["overloadduration"].get<int>();
  72. compareItem.paramOverload.threshold.nThreshold = item["overloadthreshold"].get<uint64_t>();
  73. compareItem.paramOverload.nSensibility = item["overloadsensibility"].get<int>();
  74. compareItem.paramPhase.isEnable = item["phaseenable"].get<bool>();
  75. compareItem.paramPhase.nLen = item["phaseduration"].get<int>();
  76. compareItem.paramPhase.threshold.dThreshold = item["phasethreshold"].get<double>();
  77. compareItem.paramPhase.nSensibility = item["phasesensibility"].get<int>();
  78. listItems.append(compareItem);
  79. }
  80. }nJsonCatch
  81. /*---------------------------------- 解析对比项录音通道信息 ------------------------------*/
  82. try
  83. {
  84. /* 将json的key全部转换成小写 */
  85. nJson jsonRet;
  86. if(!convertJsonKeyToLower(nJson::parse(strRet1.toStdString()), jsonRet))
  87. {
  88. SPDLOG_LOGGER_ERROR(m_logger, "转换JSON键名为小写失败");
  89. return false;
  90. }
  91. int code = jsonRet["code"].get<int>();
  92. if(code != 0)
  93. {
  94. SPDLOG_LOGGER_ERROR(m_logger, "获取对比项通道信息失败,错误码: {}, 错误信息: {}", code, jsonRet["message"].get<std::string>());
  95. return false;
  96. }
  97. nJson jsonResult = jsonRet["result"];
  98. /* 使用迭代器获取对比项信息 */
  99. auto it = listItems.begin();
  100. for(const auto& item : jsonResult)
  101. {
  102. CompareItemRoadInfo_t roadInfo;
  103. int itemID = item["itemid"].get<int>();
  104. roadInfo.nCompareRoadNum = item["roadnum"].get<bool>();
  105. roadInfo.strCompareRoadName = QString::fromStdString(item["roadname"].get<std::string>());
  106. roadInfo.isEnableRecord = item["roadrecordenable"].get<bool>();
  107. roadInfo.scRoadInfo.nSoundCardNum = item["soundcardnum"].get<int>();
  108. roadInfo.scRoadInfo.strSoundCardID = QString::fromStdString(item["soundcardid"].get<std::string>());
  109. roadInfo.scRoadInfo.strSoundCardName = QString::fromStdString(item["soundcardname"].get<std::string>());
  110. roadInfo.scRoadInfo.roadInfo.nRoadNum = item["soundcardroadnum"].get<int>();
  111. roadInfo.scRoadInfo.roadInfo.nChannelID = item["chnannelid"].get<int>();
  112. roadInfo.scRoadInfo.roadInfo.strChannelName = QString::fromStdString(item["channelname"].get<std::string>());
  113. /* 如果这个通道是当前迭代器的,就直接插入,如果不是则重新寻找 */
  114. if(it->nID == itemID)
  115. {
  116. it->listRoads.append(roadInfo);
  117. }else {
  118. for(it = listItems.begin(); it != listItems.end(); ++it)
  119. {
  120. if(it->nID == itemID)
  121. {
  122. it->listRoads.append(roadInfo);
  123. break;
  124. }
  125. }
  126. }
  127. }
  128. }nJsonCatch
  129. return true;
  130. }
  131. /* 添加对比项信息 */
  132. bool FromWebAPI::insertCompareItem(const QList<CompareItemInfo_t>& listItems)
  133. {
  134. /*---------------------------------- 插入对比项信息 ------------------------------*/
  135. try
  136. {
  137. int key = 1;
  138. nJson jsonArray = nJson::array();
  139. for(const auto& item : listItems)
  140. {
  141. nJson json0;
  142. json0["opName"] = "ACAS_InsertCompareItem";
  143. json0["Key"] = key++;
  144. nJson jsonItem;
  145. jsonItem["itemID"] = item.nID;
  146. jsonItem["itemName"] = item.strName.toStdString();
  147. jsonItem["itemEnable"] = item.isEnable;
  148. jsonItem["roadCount"] = item.listRoads.size();
  149. jsonItem["silentEnable"] = item.paramMute.isEnable;
  150. jsonItem["silentDuration"] = item.paramMute.nLen;
  151. jsonItem["silentThreshold"] = item.paramMute.threshold.nThreshold;
  152. jsonItem["silentSensibility"] = item.paramMute.nSensibility;
  153. jsonItem["overloadEnable"] = item.paramOverload.isEnable;
  154. jsonItem["overloadDuration"] = item.paramOverload.nLen;
  155. jsonItem["overloadThreshold"] = item.paramOverload.threshold.nThreshold;
  156. jsonItem["overloadSensibility"] = item.paramOverload.nSensibility;
  157. jsonItem["phaseEnable"] = item.paramPhase.isEnable;
  158. jsonItem["phaseDuration"] = item.paramPhase.nLen;
  159. jsonItem["phaseThreshold"] = item.paramPhase.threshold.dThreshold;
  160. jsonItem["phaseSensibility"] = item.paramPhase.nSensibility;
  161. json0["paramList"] = jsonItem;
  162. jsonArray.push_back(json0);
  163. }
  164. QString strSend = QString::fromStdString(jsonArray.dump());
  165. QString strRet;
  166. int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_BatchTransAction, strSend, strRet);
  167. if(ret != 0)
  168. {
  169. SPDLOG_LOGGER_ERROR(m_logger, "添加对比项信息失败,错误码: {}, 错误信息: {}", ret, m_httpApi->DoGetLastError(&ret).toStdString());
  170. return false;
  171. }
  172. }nJsonCatch
  173. try
  174. {
  175. int Key = 1;
  176. nJson jsonArray = nJson::array();
  177. for(const auto& item : listItems)
  178. {
  179. for(const auto& road : item.listRoads)
  180. {
  181. nJson json1;
  182. json1["opName"] = "ACAS_InsertCompareItemRoad";
  183. json1["Key"] = Key++;
  184. nJson jsonRoad;
  185. jsonRoad["itemID"] = item.nID;
  186. jsonRoad["roadNum"] = road.nCompareRoadNum;
  187. jsonRoad["roadName"] = road.strCompareRoadName.toStdString();
  188. jsonRoad["roadRecordEnable"] = road.isEnableRecord;
  189. jsonRoad["soundCardNum"] = road.scRoadInfo.nSoundCardNum;
  190. jsonRoad["soundCardID"] = road.scRoadInfo.strSoundCardID.toStdString();
  191. jsonRoad["soundCardName"] = road.scRoadInfo.strSoundCardName.toStdString();
  192. jsonRoad["soundCardRoadNum"] = road.scRoadInfo.roadInfo.nRoadNum;
  193. jsonRoad["channelID"] = road.scRoadInfo.roadInfo.nChannelID;
  194. jsonRoad["channelName"] = road.scRoadInfo.roadInfo.strChannelName.toStdString();
  195. json1["paramList"] = jsonRoad;
  196. jsonArray.push_back(json1);
  197. }
  198. }
  199. QString strSend = QString::fromStdString(jsonArray.dump());
  200. QString strRet;
  201. int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_BatchTransAction, strSend, strRet);
  202. if(ret != 0)
  203. {
  204. SPDLOG_LOGGER_ERROR(m_logger, "添加对比项通道信息失败,错误码: {}, 错误信息: {}", ret, m_httpApi->DoGetLastError(&ret).toStdString());
  205. return false;
  206. }
  207. }nJsonCatch
  208. return true;
  209. }
  210. /* 修改对比项信息 */
  211. bool FromWebAPI::updateCompareItem(const QList<CompareItemInfo_t>& listItems)
  212. {
  213. return true;
  214. }
  215. /* 删除对比项信息 */
  216. bool FromWebAPI::deleteCompareItem(QList<int> listIDs)
  217. {
  218. return true;
  219. }