DeviceManagerProxy.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #include "DeviceManagerProxy.h"
  2. #include <QJsonArray>
  3. #include <QJsonObject>
  4. #include <QJsonDocument>
  5. #include <QtCore/QTextCodec>
  6. #include <fstream>
  7. #define DEVICE_NODE "devices"
  8. std::string loadContent(std::string szFilename)
  9. {
  10. szFilename = QString::fromLocal8Bit(szFilename.c_str()).toLocal8Bit().toStdString();
  11. std::ifstream inStream(szFilename.c_str(),std::ios::in | std::ios::binary);
  12. if( inStream.is_open() != true )
  13. {
  14. return "";
  15. }
  16. return std::string((std::istreambuf_iterator<char>(inStream)),std::istreambuf_iterator<char>());
  17. }
  18. DeviceManagerProxy::DeviceManagerProxy(RedisAgent* redis)
  19. {
  20. m_pRedis = redis;
  21. }
  22. bool DeviceManagerProxy::parse(QString cfg,AlarmRuler& ar)
  23. {
  24. //qDebug() << __FILE__ << __LINE__ << cfg;
  25. //通过网页传来的 json内承运商中文名是 utf-8 编码
  26. QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
  27. QTextCodec::setCodecForLocale(utf8);
  28. QJsonDocument jsonDoc(QJsonDocument::fromJson(cfg.toLocal8Bit()));
  29. QJsonObject jsonObject = jsonDoc.object();
  30. QStringList keys = jsonObject.keys();
  31. foreach (QString key, keys)
  32. {
  33. if( key.compare("code",Qt::CaseInsensitive) == 0)
  34. {
  35. ar.NodeCode = jsonObject["code"].toString().toLocal8Bit().toStdString();
  36. }
  37. else if( key.compare("dataItemCode",Qt::CaseInsensitive) == 0)
  38. {
  39. ar.DataItemCode = jsonObject["dataItemCode"].toString().toLocal8Bit().toStdString();
  40. }
  41. else if( key.compare("operator",Qt::CaseInsensitive) == 0)
  42. {
  43. ar.Operator = jsonObject["operator"].toString().toLocal8Bit().toStdString();
  44. }
  45. else if( key.compare("operator1",Qt::CaseInsensitive) == 0)
  46. {
  47. ar.dbOperator1 = jsonObject["operator1"].toDouble();
  48. }
  49. else if( key.compare("operator2",Qt::CaseInsensitive) == 0)
  50. {
  51. ar.dbOperator2 = jsonObject["operator2"].toDouble();
  52. }
  53. else if( key.compare("operator2",Qt::CaseInsensitive) == 0)
  54. {
  55. ar.nKeepTimes = jsonObject["operator2"].toInt();
  56. }
  57. }
  58. return true;
  59. }
  60. DeviceInfo DeviceManagerProxy::loadDataAlarm(std::string id,std::string app)
  61. {
  62. DeviceInfo di;
  63. if( m_pRedis != nullptr)
  64. {
  65. ModuleInfo mi;
  66. mi.Code = "alarm";
  67. mi.AssemblyName = app;
  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.dbOperator2);
  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. }
  96. return di;
  97. }
  98. DeviceInfo DeviceManagerProxy::loadCommAlarm(std::string id,std::string app)
  99. {
  100. DeviceInfo di;
  101. if( m_pRedis != nullptr)
  102. {
  103. ModuleInfo mi;
  104. mi.Code = "alarm";
  105. mi.AssemblyName = app;
  106. DataItem oDT;
  107. oDT.Code = "comm";
  108. mi.Properties.push_back(oDT);
  109. QHash<QString, QString> mps = m_pRedis->hgetall(id.c_str());
  110. QHash<QString, QString>::iterator itr;
  111. for( itr = mps.begin(); itr != mps.end(); ++itr)
  112. {
  113. if( itr.key().isEmpty() || itr.value().isEmpty() )
  114. {
  115. continue;
  116. }
  117. if( itr.key().compare(DEVICE_NODE,Qt::CaseInsensitive) != 0 )
  118. {
  119. continue;
  120. }
  121. Setting oSet;
  122. oSet.Name = itr.key().toLocal8Bit().toStdString();
  123. oSet.qValue = itr.value();
  124. mi.vSettings.push_back(oSet);
  125. break;
  126. }
  127. di.ModuleInfo = mi;
  128. }
  129. return di;
  130. }