DeviceManagerProxy.cpp 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "DeviceManagerProxy.h"
  2. #include <QJsonArray>
  3. #include <QJsonObject>
  4. #include <QJsonDocument>
  5. #include <QtCore/QTextCodec>
  6. #include <fstream>
  7. std::string loadContent(std::string szFilename)
  8. {
  9. szFilename = QString::fromLocal8Bit(szFilename.c_str()).toLocal8Bit().toStdString();
  10. std::ifstream inStream(szFilename.c_str(),std::ios::in | std::ios::binary);
  11. if( inStream.is_open() != true )
  12. {
  13. return "";
  14. }
  15. return std::string((std::istreambuf_iterator<char>(inStream)),std::istreambuf_iterator<char>());
  16. }
  17. DeviceManagerProxy::DeviceManagerProxy(RedisAgent* redis)
  18. {
  19. m_pRedis = redis;
  20. }
  21. bool DeviceManagerProxy::parse(QString cfg,AlarmRuler& ar)
  22. {
  23. qDebug() << __FILE__ << __LINE__ << cfg;
  24. //通过网页传来的 json内承运商中文名是 utf-8 编码
  25. QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
  26. QTextCodec::setCodecForLocale(utf8);
  27. QJsonDocument jsonDoc(QJsonDocument::fromJson(cfg.toLocal8Bit()));
  28. QJsonObject jsonObject = jsonDoc.object();
  29. QStringList keys = jsonObject.keys();
  30. foreach (QString key, keys)
  31. {
  32. if( key.compare("nodeCode",Qt::CaseInsensitive) == 0)
  33. {
  34. ar.NodeCode = jsonObject["nodeCode"].toString().toLocal8Bit().toStdString();
  35. }
  36. else if( key.compare("dataItemCode",Qt::CaseInsensitive) == 0)
  37. {
  38. ar.DataItemCode = jsonObject["dataItemCode"].toString().toLocal8Bit().toStdString();
  39. }
  40. else if( key.compare("operator",Qt::CaseInsensitive) == 0)
  41. {
  42. ar.Operator = jsonObject["operator"].toString().toLocal8Bit().toStdString();
  43. }
  44. else if( key.compare("operator1",Qt::CaseInsensitive) == 0)
  45. {
  46. ar.dbOperator1 = jsonObject["operator1"].toDouble();
  47. }
  48. else if( key.compare("operator2",Qt::CaseInsensitive) == 0)
  49. {
  50. ar.dbOperator2 = jsonObject["operator2"].toDouble();
  51. }
  52. else if( key.compare("operator2",Qt::CaseInsensitive) == 0)
  53. {
  54. ar.nKeepTimes = jsonObject["operator2"].toInt();
  55. }
  56. }
  57. return true;
  58. }
  59. std::list<AlarmRuler> DeviceManagerProxy::loadDevices(std::string id,std::string app)
  60. {
  61. std::list<AlarmRuler> lstRulers;
  62. if( m_pRedis != nullptr)
  63. {
  64. QStringList lst = m_pRedis->hvals(id.c_str());
  65. foreach (QString str, lst)
  66. {
  67. if( str.isEmpty() )
  68. {
  69. continue;
  70. }
  71. AlarmRuler ar;
  72. if( parse(str,ar) )
  73. {
  74. lstRulers.push_back(ar);
  75. }
  76. }
  77. }
  78. return lstRulers;
  79. }