DeviceManagerProxy.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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("code",Qt::CaseInsensitive) == 0)
  33. {
  34. ar.NodeCode = jsonObject["code"].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<DeviceInfo> DeviceManagerProxy::loadDevices(std::string id,std::string app)
  60. {
  61. std::list<DeviceInfo> lstDevices;
  62. if( m_pRedis != nullptr)
  63. {
  64. DeviceInfo di;
  65. ModuleInfo mi;
  66. mi.Code = "alarm";
  67. mi.AssemblyName = "plugins/AlarmRecognition.dll";
  68. DataItem oDT;
  69. oDT.Code = "data";
  70. mi.Properties.push_back(oDT);
  71. QStringList lst = m_pRedis->hvals(id.c_str());
  72. foreach (QString str, lst)
  73. {
  74. if( str.isEmpty() )
  75. {
  76. continue;
  77. }
  78. AlarmRuler ar;
  79. if( parse(str,ar) )
  80. {
  81. QString szJson;
  82. szJson += "{";
  83. szJson += QString("\"Operator\":\"%1\",").arg(ar.Operator.c_str());
  84. szJson += QString("\"Operator1\":%1,").arg(ar.dbOperator1);
  85. szJson += QString("\"Operator2\":%1,").arg(ar.dbOperator1);
  86. szJson += QString("\"KeepTimes\":%1").arg(ar.nKeepTimes);
  87. szJson += "}";
  88. Setting oSet;
  89. oSet.Name = ar.NodeCode;
  90. oSet.qValue = szJson;
  91. mi.vSettings.push_back(oSet);
  92. }
  93. }
  94. di.ModuleInfo = mi;
  95. lstDevices.push_back(di);
  96. }
  97. return lstDevices;
  98. }