12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include "DeviceManagerProxy.h"
- #include <QJsonArray>
- #include <QJsonObject>
- #include <QJsonDocument>
- #include <QtCore/QTextCodec>
- #include <fstream>
- std::string loadContent(std::string szFilename)
- {
- szFilename = QString::fromLocal8Bit(szFilename.c_str()).toLocal8Bit().toStdString();
- std::ifstream inStream(szFilename.c_str(),std::ios::in | std::ios::binary);
- if( inStream.is_open() != true )
- {
- return "";
- }
- return std::string((std::istreambuf_iterator<char>(inStream)),std::istreambuf_iterator<char>());
- }
- DeviceManagerProxy::DeviceManagerProxy(RedisAgent* redis)
- {
- m_pRedis = redis;
- }
- bool DeviceManagerProxy::parse(QString cfg,AlarmRuler& ar)
- {
- qDebug() << __FILE__ << __LINE__ << cfg;
- //通过网页传来的 json内承运商中文名是 utf-8 编码
- QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
- QTextCodec::setCodecForLocale(utf8);
- QJsonDocument jsonDoc(QJsonDocument::fromJson(cfg.toLocal8Bit()));
- QJsonObject jsonObject = jsonDoc.object();
- QStringList keys = jsonObject.keys();
- foreach (QString key, keys)
- {
- if( key.compare("nodeCode",Qt::CaseInsensitive) == 0)
- {
- ar.NodeCode = jsonObject["nodeCode"].toString().toLocal8Bit().toStdString();
- }
- else if( key.compare("dataItemCode",Qt::CaseInsensitive) == 0)
- {
- ar.DataItemCode = jsonObject["dataItemCode"].toString().toLocal8Bit().toStdString();
- }
- else if( key.compare("operator",Qt::CaseInsensitive) == 0)
- {
- ar.Operator = jsonObject["operator"].toString().toLocal8Bit().toStdString();
- }
- else if( key.compare("operator1",Qt::CaseInsensitive) == 0)
- {
- ar.dbOperator1 = jsonObject["operator1"].toDouble();
- }
- else if( key.compare("operator2",Qt::CaseInsensitive) == 0)
- {
- ar.dbOperator2 = jsonObject["operator2"].toDouble();
- }
- else if( key.compare("operator2",Qt::CaseInsensitive) == 0)
- {
- ar.nKeepTimes = jsonObject["operator2"].toInt();
- }
- }
- return true;
- }
- std::list<AlarmRuler> DeviceManagerProxy::loadDevices(std::string id,std::string app)
- {
- std::list<AlarmRuler> lstRulers;
- if( m_pRedis != nullptr)
- {
- QStringList lst = m_pRedis->hvals(id.c_str());
- foreach (QString str, lst)
- {
- if( str.isEmpty() )
- {
- continue;
- }
- AlarmRuler ar;
- if( parse(str,ar) )
- {
- lstRulers.push_back(ar);
- }
- }
- }
- return lstRulers;
- }
|