123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #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("code",Qt::CaseInsensitive) == 0)
- {
- ar.NodeCode = jsonObject["code"].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<DeviceInfo> DeviceManagerProxy::loadDevices(std::string id,std::string app)
- {
- std::list<DeviceInfo> lstDevices;
- if( m_pRedis != nullptr)
- {
- DeviceInfo di;
- ModuleInfo mi;
- mi.Code = "alarm";
- mi.AssemblyName = "plugins/AlarmRecognition.dll";
- DataItem oDT;
- oDT.Code = "data";
- mi.Properties.push_back(oDT);
- QStringList lst = m_pRedis->hvals(id.c_str());
- foreach (QString str, lst)
- {
- if( str.isEmpty() )
- {
- continue;
- }
- AlarmRuler ar;
- if( parse(str,ar) )
- {
- QString szJson;
- szJson += "{";
- szJson += QString("\"Operator\":\"%1\",").arg(ar.Operator.c_str());
- szJson += QString("\"Operator1\":%1,").arg(ar.dbOperator1);
- szJson += QString("\"Operator2\":%1,").arg(ar.dbOperator1);
- szJson += QString("\"KeepTimes\":%1").arg(ar.nKeepTimes);
- szJson += "}";
- Setting oSet;
- oSet.Name = ar.NodeCode;
- oSet.qValue = szJson;
- mi.vSettings.push_back(oSet);
- }
- }
- di.ModuleInfo = mi;
- lstDevices.push_back(di);
- }
- return lstDevices;
- }
|