#include "DeviceManagerProxy.h" #include #include #include #include #include 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(inStream)),std::istreambuf_iterator()); } 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 DeviceManagerProxy::loadDevices(std::string id,std::string app) { std::list 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; }